diff --git a/CineSync/static/js/timetable/session.js b/CineSync/static/js/timetable/session.js
index fa52d9d..1a77cbd 100644
--- a/CineSync/static/js/timetable/session.js
+++ b/CineSync/static/js/timetable/session.js
@@ -2,9 +2,9 @@
checkbox.addEventListener('change', function() {
var filmSession = checkbox.closest('.film_session');
if (checkbox.checked) {
- filmSession.classList.add('selected'); // Добавляем класс, если чекбокс выбран
+ filmSession.classList.add('selected');
} else {
- filmSession.classList.remove('selected'); // Удаляем класс, если чекбокс не выбран
+ filmSession.classList.remove('selected');
}
});
});
\ No newline at end of file
diff --git a/CineSync/templates/timetable/session.html b/CineSync/templates/timetable/session.html
index effbd9f..6b0d23f 100644
--- a/CineSync/templates/timetable/session.html
+++ b/CineSync/templates/timetable/session.html
@@ -23,26 +23,28 @@
{% endblock %}
\ No newline at end of file
diff --git a/CineSync/timetable/forms.py b/CineSync/timetable/forms.py
index 2e49454..dd89ff0 100644
--- a/CineSync/timetable/forms.py
+++ b/CineSync/timetable/forms.py
@@ -1,12 +1,28 @@
+from json import loads
+
from django import forms
from timetable.models import Auditorium, Row
class SeatSelectionForm(forms.Form):
- def __init__(self, auditorium: Auditorium):
- super().__init__()
- self.selected_seats = forms.MultipleChoiceField(
- widget=forms.CheckboxSelectMultiple,
- choices=[(str(seat.id), seat.row_number) for seat in auditorium.rows.all()],
- )
+ selected_seats = forms.MultipleChoiceField(
+ widget=forms.CheckboxSelectMultiple(),
+ )
+
+ 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}]'))
+ self.fields['selected_seats'].choices = choices
+
+ for field in self.visible_fields():
+ field.field.widget.attrs.update({"class": "seat_checkbox"})
+
+ def clean_selected_seats(self):
+ selected_seats = self.cleaned_data['selected_seats']
+ if list[str] is type(self.cleaned_data):
+ selected_seats = [loads(field) for field in selected_seats]
+ return selected_seats
diff --git a/CineSync/timetable/views.py b/CineSync/timetable/views.py
index 4de3d5c..809d904 100644
--- a/CineSync/timetable/views.py
+++ b/CineSync/timetable/views.py
@@ -5,6 +5,7 @@ from django.http import HttpResponse
from django.shortcuts import render, get_object_or_404
from timetable.models import FilmSession, Row
+
from timetable.forms import SeatSelectionForm
@@ -40,6 +41,9 @@ def timetable_view(request):
)
+from django.shortcuts import redirect
+
+
def session_view(request, sess_id):
session = get_object_or_404(
FilmSession.objects.all(),
@@ -48,12 +52,18 @@ def session_view(request, sess_id):
height = round(session.auditorium.row_count * 4 + 7)
if request.method == 'POST':
- print(request.data)
+ form = SeatSelectionForm(request.POST, auditorium=session.auditorium)
+ if form.is_valid():
+ selected_seats = form.clean_selected_seats()
+ # return redirect('куда-то-перенаправление-после-выбора-мест')
+ else:
+ form = SeatSelectionForm(auditorium=session.auditorium)
context = {
'session': session,
'seats': Row.objects.filter(auditorium_id=session.auditorium.id),
'height': height,
+ 'form': form,
}
template = 'timetable/session.html'
return render(request, template, context)