Create ticket buy page
This commit is contained in:
parent
a0f93b0a21
commit
edd44e9386
@ -9,7 +9,6 @@ urlpatterns = [
|
|||||||
path('admin/', admin.site.urls),
|
path('admin/', admin.site.urls),
|
||||||
path('films/', include('films.urls'), name='films'),
|
path('films/', include('films.urls'), name='films'),
|
||||||
path('timetable/', include('timetable.urls'), name='timetable'),
|
path('timetable/', include('timetable.urls'), name='timetable'),
|
||||||
path('ticket/<int:sess_id>', include('tickets.urls'), name='tickets'),
|
|
||||||
path("auth/", include("users.urls"), name="auth"),
|
path("auth/", include("users.urls"), name="auth"),
|
||||||
path("auth/", include("django.contrib.auth.urls"), name="auth"),
|
path("auth/", include("django.contrib.auth.urls"), name="auth"),
|
||||||
]
|
]
|
||||||
|
|||||||
0
CineSync/__init__.py
Normal file
0
CineSync/__init__.py
Normal file
@ -4,6 +4,21 @@
|
|||||||
width: 70% !important;
|
width: 70% !important;
|
||||||
border-radius: 3vw;
|
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 {
|
.ticket_film_image {
|
||||||
object-fit: cover;
|
object-fit: cover;
|
||||||
height: 20vw !important;
|
height: 20vw !important;
|
||||||
@ -43,7 +58,7 @@
|
|||||||
padding-bottom: 2vw;
|
padding-bottom: 2vw;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
.film_card {
|
.film_card, .seats_card {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background-color: #eaeaea;
|
background-color: #eaeaea;
|
||||||
margin-top: 1vw;
|
margin-top: 1vw;
|
||||||
|
|||||||
@ -77,7 +77,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="film_card_row">
|
<div class="film_card_row">
|
||||||
{% for time_sessions in session %}
|
{% for time_sessions in session %}
|
||||||
<a class="film_session" href={% url 'tickets:tickets' sess_id=time_sessions.id %}>
|
<a class="film_session" href={% url 'time_table:session' sess_id=time_sessions.id %}>
|
||||||
<div class="session_time">{{ time_sessions.start_datetime|time:"H:i" }}</div>
|
<div class="session_time">{{ time_sessions.start_datetime|time:"H:i" }}</div>
|
||||||
</a>
|
</a>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|||||||
44
CineSync/templates/timetable/session.html
Normal file
44
CineSync/templates/timetable/session.html
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
{% load static %}
|
||||||
|
{% load tags %}
|
||||||
|
{% block title %}
|
||||||
|
{{ session.film.name }}
|
||||||
|
{% endblock %}
|
||||||
|
{% block content %}
|
||||||
|
<link href="{% static 'css/style.css' %}" rel="stylesheet">
|
||||||
|
<div style="text-align: center;">
|
||||||
|
<img src="{{ session.film.image.url }}" class="film_session_image"
|
||||||
|
alt="Фотография фильма не найдена">
|
||||||
|
</div>
|
||||||
|
<div class="seats_card"
|
||||||
|
style="width: 50%; height:
|
||||||
|
{{ height }}px;
|
||||||
|
margin: 0 auto; margin-top: 20px"
|
||||||
|
>
|
||||||
|
<div style="width: 80%; margin-top: 80px; margin: 0 auto;">
|
||||||
|
<h1>{{ session.film.name }}</h1>
|
||||||
|
{{ session.auditorium.number }}<br>
|
||||||
|
{{ session.start_datetime }}
|
||||||
|
<div style="margin-top: 20%;">
|
||||||
|
<div class="line" style="margin-left: 5%; margin-top: 150px;">
|
||||||
|
<h6 style="text-align: center; margin-top: 4px">Экран</h6>
|
||||||
|
</div>
|
||||||
|
{% for row in session.auditorium.row_count|get_range %}
|
||||||
|
<div class="row">
|
||||||
|
{% for seat in seats %}
|
||||||
|
<div class="film_card_row col">
|
||||||
|
<a class="film_session">
|
||||||
|
<span style="width: 20px; height: 18px; text-align: center;">{{ seat.row_number }}</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
{{ row }}
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
<div style="text-align: center">
|
||||||
|
<button class="btn btn-primary" style="float: bottom; margin-top: 40px;">Купить билет</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
@ -1,11 +1,5 @@
|
|||||||
from django.shortcuts import render, get_object_or_404
|
from django.shortcuts import render, get_object_or_404
|
||||||
from timetable.models import FilmSession
|
|
||||||
|
|
||||||
|
|
||||||
def ticket_view(request, sess_id):
|
def ticket_view(request):
|
||||||
session = get_object_or_404(
|
return render(request, 'tickets/ticket_buy.html')
|
||||||
FilmSession.objects.all(),
|
|
||||||
id=sess_id,
|
|
||||||
)
|
|
||||||
context = {'session': session}
|
|
||||||
return render(request, 'tickets/ticket_buy.html', context)
|
|
||||||
|
|||||||
0
CineSync/timetable/templatetags/__init__.py
Normal file
0
CineSync/timetable/templatetags/__init__.py
Normal file
11
CineSync/timetable/templatetags/tags.py
Normal file
11
CineSync/timetable/templatetags/tags.py
Normal file
@ -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)
|
||||||
@ -6,5 +6,5 @@ app_name = 'time_table'
|
|||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', timetable_view, name='main'),
|
path('', timetable_view, name='main'),
|
||||||
path('session/<int:pk>', session_view, name='main'),
|
path('session/<int:sess_id>', session_view, name='session'),
|
||||||
]
|
]
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
from django.shortcuts import render
|
from django.shortcuts import render, get_object_or_404
|
||||||
from films.models import Film
|
from films.models import Film
|
||||||
|
from timetable.models import FilmSession, Row
|
||||||
|
|
||||||
|
|
||||||
def timetable_view(request):
|
def timetable_view(request):
|
||||||
@ -9,6 +10,16 @@ def timetable_view(request):
|
|||||||
return render(request, template, context)
|
return render(request, template, context)
|
||||||
|
|
||||||
|
|
||||||
def session_view(request):
|
def session_view(request, sess_id):
|
||||||
template = 'session/session_details.html'
|
session = get_object_or_404(
|
||||||
return render(request, template)
|
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)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user