8
0
Fork 0
mirror of https://gitlab2.federez.net/re2o/re2o synced 2024-12-23 15:33:45 +00:00

Factorisation des get__

This commit is contained in:
Gabriel Detraz 2018-01-31 19:43:36 +00:00 committed by root
parent 35d1123e14
commit 4ca5f98f8b

View file

@ -36,7 +36,25 @@ from django.core.cache import cache
from .aes_field import AESEncryptedField
class OptionalUser(models.Model):
class PreferencesModel(models.Model):
@classmethod
def set_in_cache(cls):
instance, _created = cls.objects.get_or_create()
cache.set(cls().__class__.__name__.lower(), instance, None)
return instance
@classmethod
def get_cached_value(cls, key):
instance = cache.get(cls().__class__.__name__.lower())
if instance == None:
instance = cls.set_in_cache()
return getattr(instance, key)
class Meta:
abstract = True
class OptionalUser(PreferencesModel):
"""Options pour l'user : obligation ou nom du telephone,
activation ou non du solde, autorisation du negatif, fingerprint etc"""
PRETTY_NAME = "Options utilisateur"
@ -68,19 +86,6 @@ class OptionalUser(models.Model):
help_text="Un nouvel utilisateur peut se créer son compte sur re2o"
)
@classmethod
def set_in_cache(cls):
optionaluser, _created = cls.objects.get_or_create()
cache.set('optionaluser', optionaluser, None)
return optionaluser
@classmethod
def get_cached_value(cls, key):
optionaluser = cache.get('optionaluser')
if optionaluser == None:
optionaluser = cls.set_in_cache()
return getattr(optionaluser, key)
class Meta:
permissions = (
("view_optionaluser", "Peut voir les options de l'user"),
@ -154,7 +159,7 @@ def optionaluser_post_save(sender, **kwargs):
user_pref.set_in_cache()
class OptionalMachine(models.Model):
class OptionalMachine(PreferencesModel):
"""Options pour les machines : maximum de machines ou d'alias par user
sans droit, activation de l'ipv6"""
PRETTY_NAME = "Options machines"
@ -181,19 +186,6 @@ class OptionalMachine(models.Model):
def ipv6(self):
return not self.get_cached_value('ipv6_mode') == 'DISABLED'
@classmethod
def set_in_cache(cls):
optionalmachine, _created = cls.objects.get_or_create()
cache.set('optionalmachine', optionalmachine, None)
return optionalmachine
@classmethod
def get_cached_value(cls, key):
optionalmachine = cache.get('optionalmachine')
if optionalmachine == None:
optionalmachine = cls.set_in_cache()
return getattr(optionalmachine, key)
class Meta:
permissions = (
("view_optionalmachine", "Peut voir les options de machine"),
@ -263,7 +255,7 @@ def optionalmachine_post_save(sender, **kwargs):
interface.sync_ipv6()
class OptionalTopologie(models.Model):
class OptionalTopologie(PreferencesModel):
"""Reglages pour la topologie : mode d'accès radius, vlan où placer
les machines en accept ou reject"""
PRETTY_NAME = "Options topologie"
@ -295,19 +287,6 @@ class OptionalTopologie(models.Model):
null=True
)
@classmethod
def set_in_cache(cls):
optionaltopologie, _created = cls.objects.get_or_create()
cache.set('optionaltopologie', optionaltopologie, None)
return optionaltopologie
@classmethod
def get_cached_value(cls, key):
optionaltopologie = cache.get('optionaltopologie')
if optionaltopologie == None:
optionaltopologie = cls.set_in_cache()
return getattr(optionaltopologie, key)
class Meta:
permissions = (
("view_optionaltopologie", "Peut voir les options de topologie"),
@ -373,7 +352,7 @@ def optionaltopologie_post_save(sender, **kwargs):
topologie_pref.set_in_cache()
class GeneralOption(models.Model):
class GeneralOption(PreferencesModel):
"""Options générales : nombre de resultats par page, nom du site,
temps les liens sont valides"""
PRETTY_NAME = "Options générales"
@ -400,19 +379,6 @@ class GeneralOption(models.Model):
blank=True,
)
@classmethod
def set_in_cache(cls):
generaloption, _created = cls.objects.get_or_create()
cache.set('generaloption', generaloption, None)
return generaloption
@classmethod
def get_cached_value(cls, key):
generaloption = cache.get('generaloption')
if generaloption == None:
generaloption = cls.set_in_cache()
return getattr(generaloption, key)
class Meta:
permissions = (
("view_generaloption", "Peut voir les options générales"),
@ -550,7 +516,7 @@ class Service(models.Model):
return str(self.name)
class AssoOption(models.Model):
class AssoOption(PreferencesModel):
"""Options générales de l'asso : siret, addresse, nom, etc"""
PRETTY_NAME = "Options de l'association"
@ -588,19 +554,6 @@ class AssoOption(models.Model):
blank=True,
)
@classmethod
def set_in_cache(cls):
assooption, _created = cls.objects.get_or_create()
cache.set('assooption', assooption, None)
return assooption
@classmethod
def get_cached_value(cls, key):
assooption = cache.get('assooption')
if assooption == None:
assooption = cls.set_in_cache()
return getattr(assooption, key)
class Meta:
permissions = (
("view_assooption", "Peut voir les options de l'asso"),