From bb6d57cf1702345b815dc09a30206a67a2e2d2c3 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 22 Apr 2024 20:44:54 +0500 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20=D1=81?= =?UTF-8?q?=D1=82=D1=80=D0=B0=D0=BD=D0=B8=D1=86=D1=83=20=D0=BE=D1=82=D0=BE?= =?UTF-8?q?=D0=B1=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=BA=D0=B0=D0=B7=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CineSync/static/css/films/film_details.css | 7 +- .../css/includes/film_timtable_card.css | 5 +- .../static/css/includes/my_order_card.css | 130 ++++++++++++++++++ CineSync/static/css/tickets/my_orders.css | 5 + .../includes/film_timetable_card.html | 4 +- .../templates/includes/my_order_card.html | 42 ++++++ CineSync/templates/tickets/my_orders.html | 4 +- CineSync/tickets/models.py | 3 + CineSync/tickets/views.py | 7 +- 9 files changed, 195 insertions(+), 12 deletions(-) create mode 100644 CineSync/static/css/includes/my_order_card.css create mode 100644 CineSync/templates/includes/my_order_card.html diff --git a/CineSync/static/css/films/film_details.css b/CineSync/static/css/films/film_details.css index c0ff304..1b8e6b9 100644 --- a/CineSync/static/css/films/film_details.css +++ b/CineSync/static/css/films/film_details.css @@ -39,12 +39,7 @@ margin-top: 5vw; } .description_card::-webkit-scrollbar { - width: 7px; -} -.description_card::-webkit-scrollbar-thumb { - background-color: #0d1d3a; - border-radius: 5vw; - border: 1px solid #eaeaea; + display: none; } .session_title_block { margin-top: 1vw; diff --git a/CineSync/static/css/includes/film_timtable_card.css b/CineSync/static/css/includes/film_timtable_card.css index 3e6a934..cae21ae 100644 --- a/CineSync/static/css/includes/film_timtable_card.css +++ b/CineSync/static/css/includes/film_timtable_card.css @@ -71,11 +71,9 @@ .countries_block { max-width: 15vw; overflow-x: auto; - margin-left: 0.8vw; display: flex; flex-wrap: nowrap; flex-direction: row; - padding: 0.2vw; border-radius: 0.5vw; } .countries { @@ -85,10 +83,11 @@ margin-left: 0.1vw; flex-direction: row; } -.countries span { +.countries span, .film_duration { color: #aaaaaa; font-weight: bold; padding: 0.4vw; + margin-left: 0.6vw; } .countries_block::-webkit-scrollbar { height: 5px; diff --git a/CineSync/static/css/includes/my_order_card.css b/CineSync/static/css/includes/my_order_card.css new file mode 100644 index 0000000..a17f4a8 --- /dev/null +++ b/CineSync/static/css/includes/my_order_card.css @@ -0,0 +1,130 @@ +.my_order_card { + width: 100%; + background-color: #eaeaea; + margin-top: 1vw; + margin-bottom: 1vw; + border-radius: 3vw; + display: flex; + flex-direction: row; + flex-wrap: nowrap; + align-items: center; + justify-content: flex-start; +} +.age_limit { + margin-left: 1vw; + padding: 0.1vw; + padding-left: 0.25vw; + padding-right: 0.25vw; + border: 0.15vw solid #aaaaaa; + color: #aaaaaa; + font-weight: bold; + border-radius: 0.5vw; + font-size: 0.7vw; +} +.film_card_image { + object-fit: cover; + height: 15vw !important; + width: 10vw !important; + border-radius: 3vw; +} +.film_card_column { + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: space-around; + height: 13vw; + margin-left: 2vw; + overflow-x: scroll; +} +.film_card_column::-webkit-scrollbar { + height: 7px; +} +.film_card_column::-webkit-scrollbar-thumb { + background-color: #0d1d3a; + border-radius: 5vw; + border: 1px solid #eaeaea; +} +.film_card_title_row { + height: 17%; + margin-top: 0.5vw; + margin-bottom: 0.5vw; + display: flex; + flex-direction: row; + flex-wrap: nowrap; + align-items: center; + justify-content: space-evenly; +} +.film_card_row { + height: 66%; + display: flex; + align-items: center; + flex-direction: row; + flex-wrap: nowrap; +} +.film_card_footer { + height: 17%; + display: flex; + align-items: flex-start; + flex-direction: row; + flex-wrap: nowrap; +} +.countries_block { + max-width: 15vw; + overflow-x: auto; + display: flex; + flex-wrap: nowrap; + flex-direction: row; + border-radius: 0.5vw; +} +.countries { + display: flex; + flex-wrap: nowrap; + align-items: center; + margin-left: 0.1vw; + flex-direction: row; +} +.countries span, .film_duration { + color: #aaaaaa; + font-weight: bold; + padding: 0.4vw; + margin-left: 0.6vw; +} +.countries_block::-webkit-scrollbar { + height: 5px; +} +.countries_block::-webkit-scrollbar-thumb { + background-color: #0d1d3a; + border-radius: 5vw; + border: 2px solid #eaeaea; +} +.film_title { + font-size: 1.5vw; + max-width: 40vw; + text-wrap: nowrap; + overflow-x: auto; +} +.film_title::-webkit-scrollbar { + height: 7px; +} +.film_title::-webkit-scrollbar-thumb { + background-color: #0d1d3a; + border-radius: 5vw; + border: 1px solid #eaeaea; +} +.ticket { + background-color: #0d1d3a; + padding: 0.5vw; + color: #eaeaea; + margin: 1vw; + display: flex; + flex-direction: column; + flex-wrap: nowrap; + justify-content: center; + align-items: flex-start; + font-weight: bold; + border-radius: 1vw; + width: 5vw; +} +.column { + width: 18vw; +} \ No newline at end of file diff --git a/CineSync/static/css/tickets/my_orders.css b/CineSync/static/css/tickets/my_orders.css index 8a02a2a..aea6f08 100644 --- a/CineSync/static/css/tickets/my_orders.css +++ b/CineSync/static/css/tickets/my_orders.css @@ -1,3 +1,8 @@ .header_title { margin-top: 5vw; +} +.my_orders_block { + width: 80%; + margin-left: 10%; + margin-right: 10%; } \ No newline at end of file diff --git a/CineSync/templates/includes/film_timetable_card.html b/CineSync/templates/includes/film_timetable_card.html index 047c298..c90429f 100644 --- a/CineSync/templates/includes/film_timetable_card.html +++ b/CineSync/templates/includes/film_timetable_card.html @@ -1,6 +1,7 @@ {% load static %}
+ {% if film.image %} Фотография фильма не найдена @@ -9,8 +10,9 @@ {% endif %}
- + {{ film.age_limit }} + {{ film.duration }}мин.
{% for country in film.countries.all %}
diff --git a/CineSync/templates/includes/my_order_card.html b/CineSync/templates/includes/my_order_card.html new file mode 100644 index 0000000..13ea1d9 --- /dev/null +++ b/CineSync/templates/includes/my_order_card.html @@ -0,0 +1,42 @@ +{% load static %} + +
+ {% if order.session.film.image %} + Фотография фильма не найдена + {% else %} +

Картинки нет :( {{order.session.film}}

+ {% endif %} +
+
+ + {{ order.session.film.age_limit }} + {{ order.session.film.duration }}мин. +
+ {% for country in order.session.film.countries.all %} +
+ {{ country }} +
+ {% endfor %} +
+
+
+
+

{{ order.session.auditorium.number }}

+

{{ order.session.start_datetime }}

+

Заказ от: {{ order.datetime_order }}

+
+ {% for ticket in order.tickets.all %} +
+ + +
+ {% endfor %} +
+ +
+
\ No newline at end of file diff --git a/CineSync/templates/tickets/my_orders.html b/CineSync/templates/tickets/my_orders.html index 4cadb4d..83d13d9 100644 --- a/CineSync/templates/tickets/my_orders.html +++ b/CineSync/templates/tickets/my_orders.html @@ -9,6 +9,8 @@

Мои заказы

- + {% for order in my_orders %} + {% include "includes/my_order_card.html" %} + {% endfor %}
{% endblock %} \ No newline at end of file diff --git a/CineSync/tickets/models.py b/CineSync/tickets/models.py index 78dd5d5..4916ba3 100644 --- a/CineSync/tickets/models.py +++ b/CineSync/tickets/models.py @@ -31,6 +31,9 @@ class Order(Model): help_text='Дата и время оформления заказа', ) + def __str__(self): + return f'{self.profile} {self.session}' + class Meta: db_table = 'tickets_orders' verbose_name = 'Заказ' diff --git a/CineSync/tickets/views.py b/CineSync/tickets/views.py index 1411777..cabd2ef 100644 --- a/CineSync/tickets/views.py +++ b/CineSync/tickets/views.py @@ -18,12 +18,17 @@ def my_orders(request): orders = get_list_or_404( Order.objects.filter( profile__id=user.profile.id, + ).select_related( + 'session', + 'session__film', ).prefetch_related( 'tickets', + ).order_by( + '-datetime_order' ) ) context = { - 'orders': orders, + 'my_orders': orders, } template = 'tickets/my_orders.html'