diff --git a/CineSync/core/__init__.py b/CineSync/core/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/CineSync/core/functions.py b/CineSync/core/functions.py new file mode 100644 index 0000000..dba162a --- /dev/null +++ b/CineSync/core/functions.py @@ -0,0 +1,17 @@ +from timetable.models import FilmSession + + +def get_film_to_sessions(): + film_sessions = FilmSession.objects.nearest_timetable() + sessions_by_date_and_film = {} + + for session in film_sessions: + session_date = session.start_datetime.date() + session_film = session.film + sessions_by_date_and_film.setdefault(session_date, {}).setdefault(session_film, []).append(session) + + for session_date in sessions_by_date_and_film: + for session_film in sessions_by_date_and_film[session_date]: + sessions_by_date_and_film[session_date][session_film].sort(key=lambda x: x.start_datetime) + + return sessions_by_date_and_film diff --git a/CineSync/core/migrations/__init__.py b/CineSync/core/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/CineSync/films/views.py b/CineSync/films/views.py index ff5a111..7b68a49 100644 --- a/CineSync/films/views.py +++ b/CineSync/films/views.py @@ -2,7 +2,7 @@ from django.http import HttpResponse from django.shortcuts import get_object_or_404, render from films.models import Film -from timetable.models import FilmSession +from core.functions import get_film_to_sessions def films_list(request: HttpResponse) -> HttpResponse: @@ -19,28 +19,7 @@ def film_details(request: HttpResponse, film_id: int) -> HttpResponse: Film.objects.released(), id=film_id, ) - film_sessions = FilmSession.objects.nearest_timetable().filter( - film_id=film_id, - ) - sessions_by_date_and_film = {} - - for session in film_sessions: - session_date = session.start_datetime.date() - if session_date not in sessions_by_date_and_film: - sessions_by_date_and_film[session_date] = {} - - film_sessions_for_date = sessions_by_date_and_film[session_date] - - if session.film not in film_sessions_for_date: - film_sessions_for_date[session.film] = [] - - film_sessions_for_date[session.film].append(session) - - for session_date, session_films in sessions_by_date_and_film.items(): - for session_film in session_films: - sessions_by_date_and_film[session_date][session_film].sort( - key=lambda sorted_session: sorted_session.start_datetime, - ) + sessions_by_date_and_film = get_film_to_sessions() context = { 'film_sessions': sessions_by_date_and_film, diff --git a/CineSync/home/views.py b/CineSync/home/views.py index 42baca4..e67e464 100644 --- a/CineSync/home/views.py +++ b/CineSync/home/views.py @@ -5,23 +5,12 @@ from django.http import HttpResponse from django.shortcuts import render from films.models import Film -from timetable.models import FilmSession +from core.functions import get_film_to_sessions def homepage(request): films = Film.objects.on_main() - film_sessions = FilmSession.objects.nearest_timetable() - sessions_by_date_and_film = {} - - for session in film_sessions: - session_date = session.start_datetime.date() - session_film = session.film - sessions_by_date_and_film.setdefault(session_date, {}).setdefault(session_film, []).append(session) - - for session_date in sessions_by_date_and_film: - for session_film in sessions_by_date_and_film[session_date]: - sessions_by_date_and_film[session_date][session_film].sort(key=lambda x: x.start_datetime) - + sessions_by_date_and_film = get_film_to_sessions() template = render( request, 'home/homepage.html',