diff --git a/CineSync/films/migrations/0005_film_age_limit.py b/CineSync/films/migrations/0005_film_age_limit.py new file mode 100644 index 0000000..ca3ee0b --- /dev/null +++ b/CineSync/films/migrations/0005_film_age_limit.py @@ -0,0 +1,30 @@ +# Generated by Django 4.2 on 2024-04-20 12:53 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("films", "0004_film_image"), + ] + + operations = [ + migrations.AddField( + model_name="film", + name="age_limit", + field=models.CharField( + choices=[ + ["0+", "0+"], + ["6+", "0+"], + ["12+", "12+"], + ["16+", "16+"], + ["18+", "18+"], + ], + default="12+", + help_text="Возрастное ограничение", + max_length=3, + ), + preserve_default=False, + ), + ] diff --git a/CineSync/films/models.py b/CineSync/films/models.py index bbfc5d5..437beba 100644 --- a/CineSync/films/models.py +++ b/CineSync/films/models.py @@ -117,6 +117,19 @@ class Film(Model): help_text='Жанры фильма', ) + age_limit = CharField( + help_text='Возрастное ограничение', + max_length=3, + null=False, + choices=( + ['0+', '0+'], + ['6+', '0+'], + ['12+', '12+'], + ['16+', '16+'], + ['18+', '18+'], + ), + ) + def get_image_300x300(self): return sorl.thumbnail.get_thumbnail( self.image, diff --git a/CineSync/static/css/base.css b/CineSync/static/css/base.css index 450190c..f93fb7e 100644 --- a/CineSync/static/css/base.css +++ b/CineSync/static/css/base.css @@ -3,4 +3,12 @@ } body { background-color: #0d1d3a; +} +html::-webkit-scrollbar { + width: 0.8vw; +} +html::-webkit-scrollbar-thumb { + background-color: #eaeaea; + border-radius: 5vw; + border: 4px solid #0d1d3a; } \ No newline at end of file diff --git a/CineSync/static/css/home/homepage.css b/CineSync/static/css/home/homepage.css index 38e3870..216fc4d 100644 --- a/CineSync/static/css/home/homepage.css +++ b/CineSync/static/css/home/homepage.css @@ -17,4 +17,12 @@ height: 35vw !important; width: 25vw !important; border-radius: 3vw; +} +.film_card_column::-webkit-scrollbar { + height: 7px; +} +.film_card_column::-webkit-scrollbar-thumb { + background-color: #0d1d3a; + border-radius: 5vw; + border: 1px solid #ffffff; } \ No newline at end of file diff --git a/CineSync/static/css/timetable/session.css b/CineSync/static/css/timetable/session.css index 61c107c..8fa4d9b 100644 --- a/CineSync/static/css/timetable/session.css +++ b/CineSync/static/css/timetable/session.css @@ -1,35 +1,30 @@ .seats_card { + margin-left: 27%; + margin-right: 27%; + margin-top: 2vw; + margin-bottom: 5vw; background-color: #eaeaea; border-radius: 3vw; display: flex; - flex-direction: row; + flex-direction: column; flex-wrap: nowrap; align-items: center; justify-content: center; - - width: 50%; - margin: 0 auto; - margin-top: 2vw; - + width: 46%; overflow-x: auto; overflow-y: auto; } -.card_body { - width: 80%; +.seat_checkbox { + display: none; } -.line { - width: 30%; - height: 0.5vw; - background-color: black; - position: absolute; - top: 70%; - border-radius: 3vw; - margin-left: 5%; - margin-top: 8vw; +.seat_checkbox:checked + .seat_number { + color: #ffffff; } -h6 { - text-align: center; - margin-top: 0.4vw; +.selected { + background-color: #0d1d3a; +} +.selected:hover { + background-color: #0d1d3a; } .seat_number { width: 1vw; @@ -54,29 +49,35 @@ h6 { border-radius: 3vw; } .film_info_block { - margin-right: 25%; - margin-left: 25%; - width: 50%; + margin-top: 5vw; + margin-right: 27%; + margin-left: 27%; + width: 46%; display: flex; flex-direction: row; flex-wrap: nowrap; align-items: flex-end; + height: 20vw; + overflow-y: auto; } .film_info_text_block { height: 20vw; display: flex; flex-direction: column; flex-wrap: nowrap; - justify-content: space-evenly; - margin: 2vw; + justify-content: flex-start; + align-items: flex-start; + margin-left: 1vw; } -.film_info_text { +.film_info_text, .film_info_description { color: #eaeaea; } +.film_info_description { + max-height: 9.9vw; + overflow-y: auto; +} .cell { background-color: transparent !important; -} -.cell { height: 4vw; width: 3.5vw; } @@ -84,4 +85,20 @@ h6 { display: flex; align-items: center; justify-content: center; + width: 3vw; +} +.seats_card::-webkit-scrollbar { + height: 7px; +} +.seats_card::-webkit-scrollbar-thumb { + background-color: #0d1d3a; + border-radius: 5vw; + border: 1px solid #eaeaea; +} +.film_info_description::-webkit-scrollbar { + width: 5px; +} +.film_info_description::-webkit-scrollbar-thumb { + background-color: #eaeaea; + border-radius: 5vw; } \ No newline at end of file diff --git a/CineSync/static/js/timetable/session.js b/CineSync/static/js/timetable/session.js new file mode 100644 index 0000000..fa52d9d --- /dev/null +++ b/CineSync/static/js/timetable/session.js @@ -0,0 +1,10 @@ + document.querySelectorAll('.seat_checkbox').forEach(function(checkbox) { + checkbox.addEventListener('change', function() { + var filmSession = checkbox.closest('.film_session'); + if (checkbox.checked) { + filmSession.classList.add('selected'); // Добавляем класс, если чекбокс выбран + } else { + filmSession.classList.remove('selected'); // Удаляем класс, если чекбокс не выбран + } + }); +}); \ No newline at end of file diff --git a/CineSync/templates/tickets/ticket_details.html b/CineSync/templates/tickets/ticket_details.html new file mode 100644 index 0000000..e69de29 diff --git a/CineSync/templates/timetable/session.html b/CineSync/templates/timetable/session.html index f2b996c..effbd9f 100644 --- a/CineSync/templates/timetable/session.html +++ b/CineSync/templates/timetable/session.html @@ -14,30 +14,35 @@
{{ session.auditorium.number }}
{{ session.start_datetime }}
- - -| {{ row }} | - {% for seat in seats %} -- - {{ seat.row_number }} - - | - {% endfor %} -
| Ряд {{ row }} | + {% for seat in seats %} ++ + | + {% endfor %} +