From a65af4a0fec9f1b32fd8a7e5cf645f932d8772f8 Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Tue, 2 Jan 2024 13:59:07 +0100 Subject: [PATCH] Reformat and fix lint --- aleksis/apps/alsijil/data_checks.py | 4 ++ aleksis/apps/alsijil/forms.py | 4 +- aleksis/apps/alsijil/managers.py | 5 +- aleksis/apps/alsijil/models.py | 2 +- .../alsijil/static/css/alsijil/lesson.css | 6 +- aleksis/apps/alsijil/util/predicates.py | 15 ++--- aleksis/apps/alsijil/views.py | 59 ++++++++----------- 7 files changed, 46 insertions(+), 49 deletions(-) diff --git a/aleksis/apps/alsijil/data_checks.py b/aleksis/apps/alsijil/data_checks.py index cb056e8cb..87e703a0c 100644 --- a/aleksis/apps/alsijil/data_checks.py +++ b/aleksis/apps/alsijil/data_checks.py @@ -1,4 +1,5 @@ import logging +from typing import TYPE_CHECKING from django.db.models import F from django.db.models.query_utils import Q @@ -6,6 +7,9 @@ from django.utils.translation import gettext as _ from aleksis.core.data_checks import DataCheck, IgnoreSolveOption, SolveOption +if TYPE_CHECKING: + from aleksis.core.models import DataCheckResult + class DeleteRelatedObjectSolveOption(SolveOption): name = "delete" diff --git a/aleksis/apps/alsijil/forms.py b/aleksis/apps/alsijil/forms.py index 4ef9b4e24..35cdf3b70 100644 --- a/aleksis/apps/alsijil/forms.py +++ b/aleksis/apps/alsijil/forms.py @@ -56,7 +56,7 @@ class LessonDocumentationForm(forms.ModelForm): ) def save(self, **kwargs): - lesson_documentation = super(LessonDocumentationForm, self).save(commit=True) + lesson_documentation = super().save(commit=True) if ( get_site_preferences()["alsijil__allow_carry_over_same_week"] and self.cleaned_data["carry_over_week"] @@ -396,7 +396,7 @@ class FilterRegisterObjectForm(forms.Form): for_person: bool = True, default_documentation: Optional[bool] = None, groups: Optional[Sequence[Group]] = None, - **kwargs + **kwargs, ): self.request = request person = self.request.user.person diff --git a/aleksis/apps/alsijil/managers.py b/aleksis/apps/alsijil/managers.py index c9e26fa77..76240edd6 100644 --- a/aleksis/apps/alsijil/managers.py +++ b/aleksis/apps/alsijil/managers.py @@ -1,5 +1,5 @@ from datetime import date, datetime -from typing import Optional, Sequence, Union +from typing import TYPE_CHECKING, Optional, Sequence, Union from django.db.models import Case, ExpressionWrapper, F, Func, QuerySet, Value, When from django.db.models.fields import DateField @@ -13,6 +13,9 @@ from calendarweek import CalendarWeek from aleksis.apps.chronos.managers import DateRangeQuerySetMixin from aleksis.core.managers import CurrentSiteManagerWithoutMigrations +if TYPE_CHECKING: + from aleksis.core.models import Group + class RegisterObjectRelatedQuerySet(QuerySet): """Common queryset for personal notes and lesson documentations with shared API.""" diff --git a/aleksis/apps/alsijil/models.py b/aleksis/apps/alsijil/models.py index c9a964714..9ffe57c86 100644 --- a/aleksis/apps/alsijil/models.py +++ b/aleksis/apps/alsijil/models.py @@ -110,7 +110,7 @@ class RegisterObjectRelatedMixin(WeekRelatedMixin): @property def register_object( - self: Union["LessonDocumentation", "PersonalNote"] + self: Union["LessonDocumentation", "PersonalNote"], ) -> Union[LessonPeriod, Event, ExtraLesson]: """Get the object related to this lesson documentation or personal note.""" if self.lesson_period: diff --git a/aleksis/apps/alsijil/static/css/alsijil/lesson.css b/aleksis/apps/alsijil/static/css/alsijil/lesson.css index 48937d33d..3ca0427a8 100644 --- a/aleksis/apps/alsijil/static/css/alsijil/lesson.css +++ b/aleksis/apps/alsijil/static/css/alsijil/lesson.css @@ -52,8 +52,10 @@ transition: all 0.5s; margin: 0.5rem 0 1rem 0; background-color: #fff !important; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), - 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2); + box-shadow: + 0 2px 2px 0 rgba(0, 0, 0, 0.14), + 0 3px 1px -2px rgba(0, 0, 0, 0.12), + 0 1px 5px 0 rgba(0, 0, 0, 0.2); padding: 24px; } table.alsijil-table.horizontal-on-small tr:first-of-type { diff --git a/aleksis/apps/alsijil/util/predicates.py b/aleksis/apps/alsijil/util/predicates.py index d66ebb41d..c3a450ec9 100644 --- a/aleksis/apps/alsijil/util/predicates.py +++ b/aleksis/apps/alsijil/util/predicates.py @@ -82,9 +82,8 @@ def is_group_owner(user: User, obj: Union[Group, Person]) -> bool: Checks whether the person linked to the user is the owner of the given group. If there isn't provided a group, it will return `False`. """ - if isinstance(obj, Group): - if user.person in obj.owners.all(): - return True + if isinstance(obj, Group) and user.person in obj.owners.all(): + return True return False @@ -135,10 +134,7 @@ def has_person_group_object_perm(perm: str): @predicate(name) def fn(user: User, obj: Person) -> bool: groups = use_prefetched(obj, "member_of") - for group in groups: - if check_object_permission(user, perm, group, checker_obj=obj): - return True - return False + return any(check_object_permission(user, perm, group, checker_obj=obj) for group in groups) return fn @@ -150,9 +146,8 @@ def is_group_member(user: User, obj: Union[Group, Person]) -> bool: Checks whether the person linked to the user is a member of the given group. If there isn't provided a group, it will return `False`. """ - if isinstance(obj, Group): - if user.person in obj.members.all(): - return True + if isinstance(obj, Group) and user.person in obj.members.all(): + return True return False diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py index 3a343c899..dd010383b 100644 --- a/aleksis/apps/alsijil/views.py +++ b/aleksis/apps/alsijil/views.py @@ -339,10 +339,7 @@ def week_view( ) -> HttpResponse: context = {} - if year and week: - wanted_week = CalendarWeek(year=year, week=week) - else: - wanted_week = CalendarWeek() + wanted_week = CalendarWeek(year=year, week=week) if year and week else CalendarWeek() instance = get_timetable_instance_by_pk(request, year, week, type_, id_) @@ -416,23 +413,19 @@ def week_view( context["back_url"] = back_url select_form = SelectForm(request, request.POST or None, initial=initial) - if request.method == "POST": - if select_form.is_valid(): - if "type_" not in select_form.cleaned_data: - return redirect("week_view_by_week", wanted_week.year, wanted_week.week) - else: - return redirect( - "week_view_by_week", - wanted_week.year, - wanted_week.week, - select_form.cleaned_data["type_"].value, - select_form.cleaned_data["instance"].pk, - ) + if request.method == "POST" and select_form.is_valid(): + if "type_" not in select_form.cleaned_data: + return redirect("week_view_by_week", wanted_week.year, wanted_week.week) + else: + return redirect( + "week_view_by_week", + wanted_week.year, + wanted_week.week, + select_form.cleaned_data["type_"].value, + select_form.cleaned_data["instance"].pk, + ) - if type_ == TimetableType.GROUP: - group = instance - else: - group = None + group = instance if type_ == TimetableType.GROUP else None # Group roles show_group_roles = ( @@ -608,7 +601,7 @@ def week_view( regrouped_objects[weekday].append(event_copy) # Sort register objects - for weekday in regrouped_objects.keys(): + for weekday in regrouped_objects: to_sort = regrouped_objects[weekday] regrouped_objects[weekday] = sorted(to_sort, key=register_objects_sorter) context["regrouped_objects"] = regrouped_objects @@ -865,14 +858,15 @@ def overview_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResp context["excuse_types_not_absent"] = ExcuseType.objects.filter(count_as_absent=False) form = PersonOverviewForm(request, request.POST or None, queryset=allowed_personal_notes) - if request.method == "POST" and request.user.has_perm( - "alsijil.edit_person_overview_personalnote_rule", person + if ( + request.method == "POST" + and request.user.has_perm("alsijil.edit_person_overview_personalnote_rule", person) + and form.is_valid() ): - if form.is_valid(): - with reversion.create_revision(): - reversion.set_user(request.user) - form.execute() - person.refresh_from_db() + with reversion.create_revision(): + reversion.set_user(request.user) + form.execute() + person.refresh_from_db() context["action_form"] = form table = PersonalNoteTable(filtered_personal_notes) @@ -886,7 +880,9 @@ def overview_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResp stats = [] for school_term in school_terms: stat = {} - personal_notes = PersonalNote.objects.filter(person=person,).filter( + personal_notes = PersonalNote.objects.filter( + person=person, + ).filter( Q(lesson_period__lesson__validity__school_term=school_term) | Q(extra_lesson__school_term=school_term) | Q(event__school_term=school_term) @@ -972,10 +968,7 @@ def overview_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResp def register_absence(request: HttpRequest, id_: int = None) -> HttpResponse: context = {} - if id_: - person = get_object_or_404(Person, pk=id_) - else: - person = None + person = get_object_or_404(Person, pk=id_) if id_ else None register_absence_form = RegisterAbsenceForm( request, request.POST or None, initial={"person": person} -- GitLab