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
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:
......
......@@ -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
......
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