mirror of https://github.com/papermerge/mglib
56 lines
1.3 KiB
Python
56 lines
1.3 KiB
Python
import importlib
|
|
|
|
try:
|
|
from django.conf import settings as django_settings
|
|
except ImportError:
|
|
# Operating outside django, use own settings module
|
|
django_settings = None
|
|
|
|
|
|
class DefaultSettings:
|
|
|
|
def __init__(
|
|
self,
|
|
settings_module="mglib.conf.default_settings"
|
|
):
|
|
self.SETTINGS_MODULE = settings_module
|
|
|
|
mod = importlib.import_module(
|
|
self.SETTINGS_MODULE
|
|
)
|
|
|
|
for setting in dir(mod):
|
|
if setting.isupper():
|
|
setting_value = getattr(mod, setting)
|
|
setattr(self, setting, setting_value)
|
|
|
|
def configure(self, **options):
|
|
for name, value in options.items():
|
|
setattr(self, name, value)
|
|
|
|
|
|
class MgLibSettings:
|
|
|
|
def __init__(
|
|
self, default_settings
|
|
):
|
|
self.default_settings = default_settings
|
|
|
|
def __getattr__(self, name):
|
|
# When operating withing django,
|
|
# get configuration from django settings
|
|
if not name.isupper():
|
|
raise AttributeError
|
|
|
|
if django_settings:
|
|
val = getattr(django_settings, name)
|
|
return val
|
|
|
|
val = getattr(self.default_settings, name)
|
|
return val
|
|
|
|
def configure(self, **options):
|
|
self.default_settings.configure(
|
|
**options
|
|
)
|