1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-08-24 09:41:04 +00:00
seahub/thirdpart/constance/base.py

38 lines
1.1 KiB
Python
Raw Normal View History

2019-10-25 07:01:41 +00:00
from . import settings, utils
class Config(object):
"""
The global config wrapper that handles the backend.
"""
def __init__(self):
super(Config, self).__setattr__('_backend',
utils.import_module_attr(settings.BACKEND)())
def __getattr__(self, key):
try:
if not len(settings.CONFIG[key]) in (2, 3):
raise AttributeError(key)
default = settings.CONFIG[key][0]
except KeyError:
raise AttributeError(key)
if not settings.ENABLED:
return default
result = self._backend.get(key)
if result is None:
result = default
# Do not set default value to db/redis when there is no result.
# 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()