Merge branch 'refs/heads/ivan' into andrei
# Conflicts: # CineSync/static/css/home/homepage.css # CineSync/static/css/style.css
This commit is contained in:
commit
c517ee49aa
@ -2,6 +2,7 @@ from django.http import HttpResponse
|
||||
from django.shortcuts import render, get_object_or_404
|
||||
|
||||
from films.models import Film
|
||||
from timetable.models import FilmSession
|
||||
|
||||
|
||||
def films_list(request: HttpResponse) -> HttpResponse:
|
||||
@ -18,9 +19,30 @@ 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,
|
||||
)
|
||||
context = {
|
||||
'film_sessions': sessions_by_date_and_film,
|
||||
'item': item,
|
||||
}
|
||||
return render(
|
||||
request,
|
||||
'films/film_details.html',
|
||||
{'item': item},
|
||||
context,
|
||||
)
|
||||
|
||||
|
||||
32
CineSync/static/css/films/film_details.css
Normal file
32
CineSync/static/css/films/film_details.css
Normal file
@ -0,0 +1,32 @@
|
||||
.film_preview_image {
|
||||
height: 35vw !important;
|
||||
width: 20vw !important;
|
||||
margin-top: 3%;
|
||||
margin-left: 22%;
|
||||
width: 10%;
|
||||
}
|
||||
.description_card {
|
||||
width: 32%;
|
||||
height: 35vw !important;
|
||||
background-color: #eaeaea;
|
||||
border-radius: 3vw;
|
||||
float: right;
|
||||
margin-top: 0;
|
||||
margin-bottom: 1vw;
|
||||
margin-right: 22%;
|
||||
flex-direction: row;
|
||||
flex-wrap: nowrap;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
.card_text_head {
|
||||
width: 50%;
|
||||
margin-left: 7%;
|
||||
margin-top: 7%;
|
||||
}
|
||||
.card_text {
|
||||
margin-left: 7%;
|
||||
}
|
||||
.sessions_list {
|
||||
margin-top: 5%;
|
||||
}
|
||||
@ -1 +1,43 @@
|
||||
{% extends "base.html" %}
|
||||
{% extends "base.html" %}
|
||||
{% block title %}{{ item.name }}{% endblock %}
|
||||
{% load static %}
|
||||
{% block content %}
|
||||
<link href="{% static 'css/style.css' %}" rel="stylesheet">
|
||||
<link href="{% static 'css/films/film_details.css' %}" rel="stylesheet">
|
||||
<div class="description_card">
|
||||
<div class="card_text_head">
|
||||
<h2>{{ item.name }}</h2>
|
||||
<hr>
|
||||
</div>
|
||||
<div class="card_text">
|
||||
<div class="film_card_footer">
|
||||
{% for genre in item.genres.all %}
|
||||
<div class="badge text-bg-secondary genre">{{genre.name}}</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<br>
|
||||
<p><strong><em>Длительность: {{ item.duration }} минута</em></strong></p>
|
||||
<p><strong><em>Дата выхода: {{ item.release_date }}</em></strong></p>
|
||||
{{ item.description }}
|
||||
{% for date, sessions in film_sessions.items %}
|
||||
<div class="row sessions_list">
|
||||
{% for film, session in sessions.items %}
|
||||
<div style="float: top; margin-bottom: 2%">{{ date|date:"j M" }}</div>
|
||||
<div class="row time_cards">
|
||||
{% for sess in session %}
|
||||
<div class="film_card_row col-auto">
|
||||
<a class="film_session">
|
||||
<div class="session_time">{{ sess.start_datetime|time:"H:i" }}</div>
|
||||
</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="session_time">{{ session.start_datetime|time:"H:i" }}</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<img src="{{ item.image.url }}" class="d-block w-100 film_preview_image"
|
||||
alt="Фотография фильма не найдена">
|
||||
{% endblock %}
|
||||
@ -93,7 +93,7 @@ class FilmSession(Model):
|
||||
)
|
||||
|
||||
end_datetime = DateTimeField(
|
||||
verbose_name='Дата и время начала сеанса',
|
||||
verbose_name='Дата и время окончания сеанса',
|
||||
blank=True,
|
||||
null=True,
|
||||
)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user