From edd44e9386a388b088cdd74931bf79b902e13b02 Mon Sep 17 00:00:00 2001 From: Ivan Kaziev Date: Fri, 19 Apr 2024 19:21:01 +0300 Subject: [PATCH] Create ticket buy page --- CineSync/CineSync/urls.py | 1 - CineSync/__init__.py | 0 CineSync/static/css/style.css | 17 +++++++- CineSync/templates/home/homepage.html | 2 +- CineSync/templates/timetable/session.html | 44 +++++++++++++++++++++ CineSync/tickets/views.py | 10 +---- CineSync/timetable/templatetags/__init__.py | 0 CineSync/timetable/templatetags/tags.py | 11 ++++++ CineSync/timetable/urls.py | 2 +- CineSync/timetable/views.py | 19 +++++++-- 10 files changed, 90 insertions(+), 16 deletions(-) create mode 100644 CineSync/__init__.py create mode 100644 CineSync/templates/timetable/session.html create mode 100644 CineSync/timetable/templatetags/__init__.py create mode 100644 CineSync/timetable/templatetags/tags.py diff --git a/CineSync/CineSync/urls.py b/CineSync/CineSync/urls.py index c84c62d..a0bc1a2 100644 --- a/CineSync/CineSync/urls.py +++ b/CineSync/CineSync/urls.py @@ -9,7 +9,6 @@ urlpatterns = [ path('admin/', admin.site.urls), path('films/', include('films.urls'), name='films'), path('timetable/', include('timetable.urls'), name='timetable'), - path('ticket/', include('tickets.urls'), name='tickets'), path("auth/", include("users.urls"), name="auth"), path("auth/", include("django.contrib.auth.urls"), name="auth"), ] diff --git a/CineSync/__init__.py b/CineSync/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/CineSync/static/css/style.css b/CineSync/static/css/style.css index 9c0f879..887d117 100644 --- a/CineSync/static/css/style.css +++ b/CineSync/static/css/style.css @@ -4,6 +4,21 @@ width: 70% !important; border-radius: 3vw; } +.film_session_image { + margin-top: 40px; + object-fit: cover; + height: 20vw !important; + width: 50% !important; + border-radius: 3vw; +} +.line { + width: 30%; + height: 5px; + background-color: black; + position: absolute; + top: 70%; + border-radius: 3vw; +} .ticket_film_image { object-fit: cover; height: 20vw !important; @@ -43,7 +58,7 @@ padding-bottom: 2vw; flex-direction: column; } -.film_card { +.film_card, .seats_card { width: 100%; background-color: #eaeaea; margin-top: 1vw; diff --git a/CineSync/templates/home/homepage.html b/CineSync/templates/home/homepage.html index f3ad6af..ba7ae67 100644 --- a/CineSync/templates/home/homepage.html +++ b/CineSync/templates/home/homepage.html @@ -77,7 +77,7 @@
{% for time_sessions in session %} - +
{{ time_sessions.start_datetime|time:"H:i" }}
{% endfor %} diff --git a/CineSync/templates/timetable/session.html b/CineSync/templates/timetable/session.html new file mode 100644 index 0000000..f98b5e1 --- /dev/null +++ b/CineSync/templates/timetable/session.html @@ -0,0 +1,44 @@ +{% extends "base.html" %} +{% load static %} +{% load tags %} +{% block title %} +{{ session.film.name }} +{% endblock %} +{% block content %} + +
+ Фотография фильма не найдена +
+
+
+

{{ session.film.name }}

+ {{ session.auditorium.number }}
+ {{ session.start_datetime }} +
+
+
Экран
+
+ {% for row in session.auditorium.row_count|get_range %} +
+ {% for seat in seats %} + + {% endfor %} + {{ row }} +
+ {% endfor %} +
+
+ +
+
+
+{% endblock %} \ No newline at end of file diff --git a/CineSync/tickets/views.py b/CineSync/tickets/views.py index a8d2923..5794082 100644 --- a/CineSync/tickets/views.py +++ b/CineSync/tickets/views.py @@ -1,11 +1,5 @@ from django.shortcuts import render, get_object_or_404 -from timetable.models import FilmSession -def ticket_view(request, sess_id): - session = get_object_or_404( - FilmSession.objects.all(), - id=sess_id, - ) - context = {'session': session} - return render(request, 'tickets/ticket_buy.html', context) +def ticket_view(request): + return render(request, 'tickets/ticket_buy.html') diff --git a/CineSync/timetable/templatetags/__init__.py b/CineSync/timetable/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/CineSync/timetable/templatetags/tags.py b/CineSync/timetable/templatetags/tags.py new file mode 100644 index 0000000..99bb5c7 --- /dev/null +++ b/CineSync/timetable/templatetags/tags.py @@ -0,0 +1,11 @@ +from django import template + +register = template.Library() + + +@register.filter(name='get_range') +def get_range(number): + if number: + return range(1, number + 1) + + return range(0) diff --git a/CineSync/timetable/urls.py b/CineSync/timetable/urls.py index 8ea737b..63af0f7 100644 --- a/CineSync/timetable/urls.py +++ b/CineSync/timetable/urls.py @@ -6,5 +6,5 @@ app_name = 'time_table' urlpatterns = [ path('', timetable_view, name='main'), - path('session/', session_view, name='main'), + path('session/', session_view, name='session'), ] diff --git a/CineSync/timetable/views.py b/CineSync/timetable/views.py index ff54696..7a7197b 100644 --- a/CineSync/timetable/views.py +++ b/CineSync/timetable/views.py @@ -1,5 +1,6 @@ -from django.shortcuts import render +from django.shortcuts import render, get_object_or_404 from films.models import Film +from timetable.models import FilmSession, Row def timetable_view(request): @@ -9,6 +10,16 @@ def timetable_view(request): return render(request, template, context) -def session_view(request): - template = 'session/session_details.html' - return render(request, template) +def session_view(request, sess_id): + session = get_object_or_404( + FilmSession.objects.all(), + id=sess_id, + ) + height = session.auditorium.row_count * 80 + 300 + context = { + 'session': session, + 'seats': Row.objects.filter(auditorium_id=session.auditorium.id), + 'height': height, + } + template = 'timetable/session.html' + return render(request, template, context)