From eb2f42e74352ea0acdee89b20e3936f8157d3151 Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Thu, 10 Sep 2020 17:34:53 +0200 Subject: [PATCH] Prefetch form select data --- aleksis/apps/alsijil/forms.py | 9 ++++++++- aleksis/apps/alsijil/models.py | 8 +++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/aleksis/apps/alsijil/forms.py b/aleksis/apps/alsijil/forms.py index 84688f87a..c66564465 100644 --- a/aleksis/apps/alsijil/forms.py +++ b/aleksis/apps/alsijil/forms.py @@ -46,6 +46,11 @@ class PersonalNoteForm(forms.ModelForm): if self.instance and getattr(self.instance, "person", None): self.fields["person_name"].initial = str(self.instance.person) + self.fields["extra_marks"].choices = [(e.id, str(e)) for e in ExtraMark.all] + self.fields["excuse_type"].choices = [(None, "-----")] + [ + (e.id, str(e)) for e in ExcuseType.all + ] + class SelectForm(forms.Form): layout = Layout(Row("group", "teacher")) @@ -164,7 +169,9 @@ class RegisterAbsenceForm(forms.Form): ) ) ) - self.fields["person"].queryset = Person.objects.filter(pk__in=list(persons_qs.values_list("pk", flat=True))) + self.fields["person"].queryset = Person.objects.filter( + pk__in=list(persons_qs.values_list("pk", flat=True)) + ) self.fields["from_period"].choices = period_choices self.fields["to_period"].choices = period_choices diff --git a/aleksis/apps/alsijil/models.py b/aleksis/apps/alsijil/models.py index fe9d60e42..91644e9d9 100644 --- a/aleksis/apps/alsijil/models.py +++ b/aleksis/apps/alsijil/models.py @@ -1,9 +1,9 @@ -from cache_memoize import cache_memoize from django.db import models from django.utils.decorators import classproperty from django.utils.formats import date_format from django.utils.translation import gettext_lazy as _ +from cache_memoize import cache_memoize from calendarweek import CalendarWeek from aleksis.apps.alsijil.managers import PersonalNoteManager @@ -36,6 +36,12 @@ class ExcuseType(ExtensibleModel): def count_label(self): return f"{self.short_name}_count" + @classproperty + @cache_memoize(3600) + def all(cls): + qs = cls.objects.all() + return qs + class Meta: ordering = ["name"] verbose_name = _("Excuse type") -- GitLab