diff --git a/aleksis/core/models.py b/aleksis/core/models.py index 00a2faacdfb9c39cc1ca50e7b8a92277564ba315..2231fb36057c2c33edec8d6b4e1384e5693ac331 100644 --- a/aleksis/core/models.py +++ b/aleksis/core/models.py @@ -19,6 +19,7 @@ from django.utils.text import slugify from django.utils.translation import gettext_lazy as _ import jsonstore +from cache_memoize import cache_memoize from dynamic_preferences.models import PerInstancePreferenceModel from phonenumber_field.modelfields import PhoneNumberField from polymorphic.models import PolymorphicModel @@ -64,6 +65,7 @@ class SchoolTerm(ExtensibleModel): date_end = models.DateField(verbose_name=_("End date")) @classmethod + @cache_memoize(3600) def get_current(cls, day: Optional[date] = None): if not day: day = timezone.now().date() @@ -688,9 +690,10 @@ class CustomMenu(ExtensibleModel): return self.name if self.name != "" else self.id @classmethod + @cache_memoize(3600) def get_default(cls, name): """Get a menu by name or create if it does not exist.""" - menu, _ = cls.objects.get_or_create(name=name) + menu, _ = cls.objects.prefetch_related("items").get_or_create(name=name) return menu class Meta: diff --git a/aleksis/core/util/core_helpers.py b/aleksis/core/util/core_helpers.py index 8e424174c6658feb19cf02295400c4c4946dbd38..94380e00d6807293b02a7d0317432569c431902a 100644 --- a/aleksis/core/util/core_helpers.py +++ b/aleksis/core/util/core_helpers.py @@ -135,6 +135,7 @@ def lazy_get_favicon_url( ) -> Callable[[str, str], Any]: """Lazily get the URL to a favicon image.""" + @cache_memoize(3600) def _get_favicon_url(size: int, rel: str) -> Any: from favicon.models import Favicon # noqa