* Cache GlobalSetting, again

This commit is contained in:
Phil Zhitnikov 2024-05-21 01:06:51 +04:00
parent 3eec959881
commit c56186f2a1

View File

@ -8,11 +8,12 @@ from io import BytesIO
from typing import Optional from typing import Optional
from django.conf import settings from django.conf import settings
from django.core.cache import cache
from django.core.files.base import ContentFile from django.core.files.base import ContentFile
from django.core.validators import MinValueValidator, MaxValueValidator from django.core.validators import MinValueValidator, MaxValueValidator
from django.db import models from django.db import models
from django.db.models import F, Case, When, DecimalField, Prefetch, Max, Q from django.db.models import F, Case, When, DecimalField, Prefetch, Max, Q, Subquery, OuterRef
from django.db.models.functions import Ceil from django.db.models.functions import Ceil, Coalesce
from django.db.models.lookups import GreaterThan from django.db.models.lookups import GreaterThan
from django.db.transaction import atomic from django.db.transaction import atomic
from django.utils import timezone from django.utils import timezone
@ -45,13 +46,18 @@ class GlobalSettings(models.Model):
self.id = 1 self.id = 1
self.__class__.objects.exclude(id=self.id).delete() self.__class__.objects.exclude(id=self.id).delete()
super().save(*args, **kwargs) super().save(*args, **kwargs)
cache.set('global_settings', self)
def __str__(self) -> str: def __str__(self) -> str:
return f'GlobalSettings <{self.id}>' return f'GlobalSettings <{self.id}>'
@classmethod @classmethod
def load(cls) -> 'GlobalSettings': def load(cls) -> 'GlobalSettings':
obj, _ = cls.objects.get_or_create(id=1) obj = cache.get('global_settings')
if not obj:
obj, _ = cls.objects.get_or_create(id=1)
cache.set('global_settings', obj)
return obj return obj
@property @property