Skip to content
Snippets Groups Projects
Verified Commit 4c593337 authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Cache some often used methods using memoize (custom menus, school term, favicon)

parent f93485fe
No related branches found
No related tags found
1 merge request!359Performance optimizations
...@@ -19,6 +19,7 @@ from django.utils.text import slugify ...@@ -19,6 +19,7 @@ from django.utils.text import slugify
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
import jsonstore import jsonstore
from cache_memoize import cache_memoize
from dynamic_preferences.models import PerInstancePreferenceModel from dynamic_preferences.models import PerInstancePreferenceModel
from phonenumber_field.modelfields import PhoneNumberField from phonenumber_field.modelfields import PhoneNumberField
from polymorphic.models import PolymorphicModel from polymorphic.models import PolymorphicModel
...@@ -64,6 +65,7 @@ class SchoolTerm(ExtensibleModel): ...@@ -64,6 +65,7 @@ class SchoolTerm(ExtensibleModel):
date_end = models.DateField(verbose_name=_("End date")) date_end = models.DateField(verbose_name=_("End date"))
@classmethod @classmethod
@cache_memoize(3600)
def get_current(cls, day: Optional[date] = None): def get_current(cls, day: Optional[date] = None):
if not day: if not day:
day = timezone.now().date() day = timezone.now().date()
...@@ -688,9 +690,10 @@ class CustomMenu(ExtensibleModel): ...@@ -688,9 +690,10 @@ class CustomMenu(ExtensibleModel):
return self.name if self.name != "" else self.id return self.name if self.name != "" else self.id
@classmethod @classmethod
@cache_memoize(3600)
def get_default(cls, name): def get_default(cls, name):
"""Get a menu by name or create if it does not exist.""" """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 return menu
class Meta: class Meta:
......
...@@ -135,6 +135,7 @@ def lazy_get_favicon_url( ...@@ -135,6 +135,7 @@ def lazy_get_favicon_url(
) -> Callable[[str, str], Any]: ) -> Callable[[str, str], Any]:
"""Lazily get the URL to a favicon image.""" """Lazily get the URL to a favicon image."""
@cache_memoize(3600)
def _get_favicon_url(size: int, rel: str) -> Any: def _get_favicon_url(size: int, rel: str) -> Any:
from favicon.models import Favicon # noqa from favicon.models import Favicon # noqa
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment