diff --git a/CineSync/templates/includes/header.html b/CineSync/templates/includes/header.html
index bead911..191f516 100644
--- a/CineSync/templates/includes/header.html
+++ b/CineSync/templates/includes/header.html
@@ -17,6 +17,12 @@
Расписание
+ {% if user.is_authenticated %}
+
+ Мои заказы
+
+ {% endif %}
{% endwith %}
diff --git a/CineSync/templates/tickets/my_orders.html b/CineSync/templates/tickets/my_orders.html
new file mode 100644
index 0000000..b53e9f1
--- /dev/null
+++ b/CineSync/templates/tickets/my_orders.html
@@ -0,0 +1,9 @@
+{% extends "base.html" %}
+{% load static %}
+{% load tags %}
+{% block title %}
+Мои заказы
+{% endblock %}
+{% block content %}
+
+{% endblock %}
\ No newline at end of file
diff --git a/CineSync/tickets/urls.py b/CineSync/tickets/urls.py
index 28ea775..b9a851a 100644
--- a/CineSync/tickets/urls.py
+++ b/CineSync/tickets/urls.py
@@ -1,10 +1,11 @@
from django.urls import path
-from tickets.views import ticket_view, order_success
+from tickets.views import ticket_view, order_success, my_orders
app_name = 'tickets'
urlpatterns = [
path('', ticket_view, name='tickets'),
path('order/success', order_success, name='order_success'),
+ path('my/', my_orders, name='my_orders')
]
diff --git a/CineSync/tickets/views.py b/CineSync/tickets/views.py
index 0312c1e..e223fa6 100644
--- a/CineSync/tickets/views.py
+++ b/CineSync/tickets/views.py
@@ -1,5 +1,8 @@
+from django.contrib.auth.decorators import login_required
from django.shortcuts import render, get_object_or_404
+from tickets.models import Order, Ticket
+
def ticket_view(request):
return render(request, 'tickets/ticket_buy.html')
@@ -7,3 +10,16 @@ def ticket_view(request):
def order_success(request):
return render(request, 'tickets/order_success.html')
+
+
+@login_required
+def my_orders(request):
+ user = request.user
+ orders = get_object_or_404(
+ Order.objects.filter(
+ profile__id=user.profile.id,
+ ).prefetch_related(
+ 'tickets',
+ )
+ )
+ return render(request, 'tickets/my_orders.html')
diff --git a/CineSync/timetable/models.py b/CineSync/timetable/models.py
index 07491ad..39116b4 100644
--- a/CineSync/timetable/models.py
+++ b/CineSync/timetable/models.py
@@ -26,7 +26,12 @@ class FilmSessionsManager(Manager):
def all_timetable(self):
current_datetime = timezone.now()
- films_sessions = super().get_queryset().filter(
+ films_sessions = super().get_queryset().select_related(
+ 'film',
+ ).prefetch_related(
+ 'film__genres',
+ 'film__countries',
+ ).filter(
start_datetime__gte=current_datetime,
).prefetch_related(
FilmSession.film.field.name,
diff --git a/Документы/Заполнение Кинотеатр.sql b/Документы/Заполнение Кинотеатр.sql
index 6f5f6b9..98a8103 100644
--- a/Документы/Заполнение Кинотеатр.sql
+++ b/Документы/Заполнение Кинотеатр.sql
@@ -260,42 +260,28 @@ FROM
--- Определим временной промежуток в рамках рабочего времени кинотеатра (8:00 - 22:00)
+-- Определим временной промежуток в рамках рабочего дня кинотеатра (10:00 - 22:00)
WITH RECURSIVE session_times AS (
- SELECT strftime('%Y-%m-%d %H:%M', 'now', 'start of day', '+8 hours') AS start_time
+ SELECT strftime('%Y-%m-%d %H:%M', 'now', 'start of day', '+10 hours') AS start_datetime
UNION ALL
- SELECT strftime('%Y-%m-%d %H:%M', start_time, '+2 hours') FROM session_times
- WHERE start_time < strftime('%Y-%m-%d %H:%M', 'now', 'start of day', '+22 hours')
+ SELECT strftime('%Y-%m-%d %H:%M', start_datetime, '+2 hours') FROM session_times
+ WHERE start_datetime < strftime('%Y-%m-%d %H:%M', 'now', 'start of day', '+22 hours')
)
-
---INSERT INTO timetable_film_sessions (start_datetime, price, auditorium_id, film_id)
+-- Вставим сеансы для каждого фильма в каждый зал
+INSERT INTO timetable_film_sessions (start_datetime, price, auditorium_id, film_id)
SELECT
- CASE
- WHEN MAX(end_datetime) IS NULL THEN start_datetime
- ELSE MAX(end_datetime)
- END AS start_time,
- 500.00 AS price,
+ start_datetime,
+ 10.00 AS price, -- Укажите цену билета здесь
auditoriums.id AS auditorium_id,
films.id AS film_id
FROM
- session_times
-CROSS JOIN
- films_films AS films
-CROSS JOIN
+ session_times,
+ films_films AS films,
timetable_auditoriums AS auditoriums
-LEFT JOIN
- timetable_film_sessions AS prev_sessions
-ON
- auditoriums.id = prev_sessions.auditorium_id
-AND
- prev_sessions.start_datetime <= start_datetime
-AND
- prev_sessions.start_datetime + (films.duration || ' MINUTES') >= start_datetime
-GROUP BY
- start_time, auditoriums.id, films.id
ORDER BY
- start_time, film_id;
+ start_datetime, film_id;
+
@@ -345,4 +331,25 @@ INSERT INTO films_countries (name) VALUES
('Испания');
+-- Добавление режиссеров к фильмам
+INSERT INTO films_films_directors (film_id, director_id)
+SELECT f.id AS film_id, d.id AS director_id
+FROM films_films AS f
+JOIN films_directors AS d ON d.id <= f.id
+WHERE f.id BETWEEN 1 AND 40;
+
+-- Добавление актеров к фильмам
+INSERT INTO films_films_actors (film_id, actor_id)
+SELECT f.id AS film_id, a.id AS actor_id
+FROM films_films AS f
+JOIN films_actors AS a ON a.id <= f.id
+WHERE f.id BETWEEN 1 AND 40;
+
+-- Добавление стран к фильмам
+INSERT INTO films_films_countries (film_id, country_id)
+SELECT f.id AS film_id, c.id AS country_id
+FROM films_films AS f
+JOIN films_countries AS c ON c.id <= f.id
+WHERE f.id BETWEEN 1 AND 40;
+