From bf48f67f625849c39d90db5c753785c01ef88af1 Mon Sep 17 00:00:00 2001 From: andrei Date: Fri, 26 Apr 2024 18:25:06 +0500 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=BB=D0=B8=D0=BB=20=D0=B2=D0=B5=D1=82?= =?UTF-8?q?=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CineSync/core/functions.py | 8 ++++++-- CineSync/timetable/views.py | 10 ++++++---- CineSync/users/forms.py | 10 ++++++---- Документы/Текст к презентации.docx | Bin 0 -> 11977 bytes 4 files changed, 18 insertions(+), 10 deletions(-) create mode 100644 Документы/Текст к презентации.docx diff --git a/CineSync/core/functions.py b/CineSync/core/functions.py index dba162a..2ffb501 100644 --- a/CineSync/core/functions.py +++ b/CineSync/core/functions.py @@ -8,10 +8,14 @@ def get_film_to_sessions(): for session in film_sessions: session_date = session.start_datetime.date() session_film = session.film - sessions_by_date_and_film.setdefault(session_date, {}).setdefault(session_film, []).append(session) + sessions_by_date_and_film.setdefault(session_date, {}).setdefault( + session_film, [] + ).append(session) for session_date in sessions_by_date_and_film: for session_film in sessions_by_date_and_film[session_date]: - sessions_by_date_and_film[session_date][session_film].sort(key=lambda x: x.start_datetime) + sessions_by_date_and_film[session_date][session_film].sort( + key=lambda x: x.start_datetime + ) return sessions_by_date_and_film diff --git a/CineSync/timetable/views.py b/CineSync/timetable/views.py index b379694..1e89c9e 100644 --- a/CineSync/timetable/views.py +++ b/CineSync/timetable/views.py @@ -1,7 +1,5 @@ import datetime -from collections import defaultdict from datetime import date -from operator import attrgetter from django.contrib.auth.decorators import login_required from django.db import transaction @@ -23,11 +21,15 @@ def timetable_view(request): for session in film_sessions: session_date = session.start_datetime.date() session_film = session.film - sessions_by_date_and_film.setdefault(session_date, {}).setdefault(session_film, []).append(session) + sessions_by_date_and_film.setdefault(session_date, {}).setdefault( + session_film, [] + ).append(session) for session_date in sessions_by_date_and_film: for session_film in sessions_by_date_and_film[session_date]: - sessions_by_date_and_film[session_date][session_film].sort(key=lambda x: x.start_datetime) + sessions_by_date_and_film[session_date][session_film].sort( + key=lambda x: x.start_datetime + ) template = render( request, diff --git a/CineSync/users/forms.py b/CineSync/users/forms.py index 0d44221..967411e 100644 --- a/CineSync/users/forms.py +++ b/CineSync/users/forms.py @@ -7,9 +7,7 @@ from django.contrib.auth.forms import ( UserChangeForm, UserCreationForm, ) -from django.core.validators import MaxLengthValidator, RegexValidator from django.forms import DateInput, ModelForm -from django.utils.translation import gettext_lazy as _ from users.models import Profile @@ -60,7 +58,9 @@ class SignUpForm(UserCreationForm): if len(username) > 150: raise forms.ValidationError('Максимальная длина 150 символов.') if not all(char.isalnum() or char in '@/./+/-/_' for char in username): - raise forms.ValidationError('Можно использовать только буквы, цифры и символы @/./+/-/_.') + raise forms.ValidationError( + 'Можно использовать только буквы, цифры и символы @/./+/-/_.' + ) return username @@ -116,6 +116,8 @@ class UserForm(forms.ModelForm): if len(username) > 150: raise forms.ValidationError('Максимальная длина 150 символов.') if not all(char.isalnum() or char in '@/./+/-/_' for char in username): - raise forms.ValidationError('Можно использовать только буквы, цифры и символы @/./+/-/_.') + raise forms.ValidationError( + 'Можно использовать только буквы, цифры и символы @/./+/-/_.' + ) return username diff --git a/Документы/Текст к презентации.docx b/Документы/Текст к презентации.docx new file mode 100644 index 0000000000000000000000000000000000000000..1ea13b5e71ef6682cbeea8c3478eb17785dfa436 GIT binary patch literal 11977 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