diff --git a/CineSync/static/css/timetable/session.css b/CineSync/static/css/timetable/session.css
index 8fa4d9b..e1978a9 100644
--- a/CineSync/static/css/timetable/session.css
+++ b/CineSync/static/css/timetable/session.css
@@ -6,19 +6,21 @@
background-color: #eaeaea;
border-radius: 3vw;
display: flex;
+ width: 46%;
+ max-height: 50vw;
+ overflow-x: scroll;
+ overflow-y: scroll;
flex-direction: column;
flex-wrap: nowrap;
- align-items: center;
- justify-content: center;
- width: 46%;
- overflow-x: auto;
- overflow-y: auto;
+}
+.table_card {
+ margin: 3vw;
}
.seat_checkbox {
display: none;
}
.seat_checkbox:checked + .seat_number {
- color: #ffffff;
+ color: #eaeaea;
}
.selected {
background-color: #0d1d3a;
@@ -79,7 +81,8 @@
.cell {
background-color: transparent !important;
height: 4vw;
- width: 3.5vw;
+ min-width: 3.5vw;
+
}
.row_number_cell {
display: flex;
@@ -89,6 +92,7 @@
}
.seats_card::-webkit-scrollbar {
height: 7px;
+ width: 7px;
}
.seats_card::-webkit-scrollbar-thumb {
background-color: #0d1d3a;
diff --git a/CineSync/templates/timetable/session.html b/CineSync/templates/timetable/session.html
index 6b0d23f..3809e16 100644
--- a/CineSync/templates/timetable/session.html
+++ b/CineSync/templates/timetable/session.html
@@ -22,29 +22,27 @@
-
-
+
{% endblock %}
\ No newline at end of file
diff --git a/CineSync/timetable/admin.py b/CineSync/timetable/admin.py
index cffef1f..7b30c45 100644
--- a/CineSync/timetable/admin.py
+++ b/CineSync/timetable/admin.py
@@ -3,17 +3,17 @@ from django.contrib import admin
from timetable.models import Auditorium, Row, FilmSession
+class RowAdminInline(admin.StackedInline):
+ model = Row
+
+
@admin.register(Auditorium)
class AuditoriumAdmin(admin.ModelAdmin):
list_display = [
Auditorium.number.field.name,
]
-
-
-@admin.register(Row)
-class RowAdmin(admin.ModelAdmin):
- list_display = [
- Row.row_number.field.name,
+ inlines = [
+ RowAdminInline,
]
diff --git a/CineSync/timetable/forms.py b/CineSync/timetable/forms.py
index dd89ff0..886d4e6 100644
--- a/CineSync/timetable/forms.py
+++ b/CineSync/timetable/forms.py
@@ -1,3 +1,4 @@
+import pprint
from json import loads
from django import forms
@@ -13,9 +14,9 @@ class SeatSelectionForm(forms.Form):
def __init__(self, *args, auditorium: Auditorium, **kwargs):
super().__init__(*args, **kwargs)
choices = []
- for row in auditorium.rows.all():
- for seat in range(1, auditorium.row_count + 1):
- choices.append((f'[{seat}, {row.row_number}]', f'[{seat}, {row.row_number}]'))
+ for i, row in enumerate(auditorium.rows.all(), start=1):
+ for seat in range(1, row.column_count + 1):
+ choices.append((f'[{seat}, {str(i)}]', f'[{seat}, {str(i)}]'))
self.fields['selected_seats'].choices = choices
for field in self.visible_fields():
diff --git a/CineSync/timetable/models.py b/CineSync/timetable/models.py
index 6e76995..d9d4253 100644
--- a/CineSync/timetable/models.py
+++ b/CineSync/timetable/models.py
@@ -39,12 +39,12 @@ class Auditorium(Model):
verbose_name='Номер кинозала',
)
- row_count = IntegerField(
- verbose_name='Количество рядов кресел в зале',
- validators=[
- MinValueValidator(1),
- ],
- )
+ # row_count = IntegerField(
+ # verbose_name='Количество рядов кресел в зале',
+ # validators=[
+ # MinValueValidator(1),
+ # ],
+ # )
def __str__(self):
return self.number
diff --git a/CineSync/timetable/views.py b/CineSync/timetable/views.py
index 809d904..6066fed 100644
--- a/CineSync/timetable/views.py
+++ b/CineSync/timetable/views.py
@@ -1,6 +1,7 @@
import datetime
from datetime import date
+from django.db.models import Max
from django.http import HttpResponse
from django.shortcuts import render, get_object_or_404
@@ -41,15 +42,16 @@ def timetable_view(request):
)
-from django.shortcuts import redirect
-
-
def session_view(request, sess_id):
session = get_object_or_404(
FilmSession.objects.all(),
id=sess_id,
)
- height = round(session.auditorium.row_count * 4 + 7)
+ height = round(session.auditorium.rows.count() * 4 + 7)
+ row_with_most_seats = Row.objects.filter(auditorium=session.auditorium).only('column_count').annotate(
+ max_seats=Max('column_count')
+ ).order_by('-max_seats').first()
+ width = round(row_with_most_seats.column_count * 4 + 3)
if request.method == 'POST':
form = SeatSelectionForm(request.POST, auditorium=session.auditorium)
@@ -61,9 +63,9 @@ def session_view(request, sess_id):
context = {
'session': session,
- 'seats': Row.objects.filter(auditorium_id=session.auditorium.id),
'height': height,
'form': form,
+ 'width': width
}
template = 'timetable/session.html'
return render(request, template, context)