mirror of
https://github.com/jazzband/django-constance.git
synced 2026-03-16 22:40:24 +00:00
31 lines
898 B
Python
31 lines
898 B
Python
from . import settings
|
|
from . import utils
|
|
|
|
|
|
class Config:
|
|
"""The global config wrapper that handles the backend."""
|
|
|
|
def __init__(self):
|
|
super().__setattr__("_backend", utils.import_module_attr(settings.BACKEND)())
|
|
|
|
def __getattr__(self, key):
|
|
try:
|
|
if len(settings.CONFIG[key]) not in (2, 3):
|
|
raise AttributeError(key)
|
|
default = settings.CONFIG[key][0]
|
|
except KeyError as e:
|
|
raise AttributeError(key) from e
|
|
result = self._backend.get(key)
|
|
if result is None:
|
|
result = default
|
|
setattr(self, key, default)
|
|
return result
|
|
return result
|
|
|
|
def __setattr__(self, key, value):
|
|
if key not in settings.CONFIG:
|
|
raise AttributeError(key)
|
|
self._backend.set(key, value)
|
|
|
|
def __dir__(self):
|
|
return settings.CONFIG.keys()
|