import config from django.conf import settings import importlib import os MYCREOLE_ATTACHMENT_ACCESS = "MYCREOLE_ATTACHMENT_ACCESS" ACCESS_READ = 'read' ACCESS_MODIFY = 'modify' MYCREOLE_BAR = "MYCREOLE_BAR" BAR_MENUBAR = "menubar" BAR_NAVIBAR = "navibar" MYCREOLE_ROOT = "MYCREOLE_ROOT" def no_access(*args, **kwargs): return False DEFAULTS = { MYCREOLE_ATTACHMENT_ACCESS: { ACCESS_READ: 'mycreole.parameter.no_access', ACCESS_MODIFY: 'mycreole.parameter.no_access', }, MYCREOLE_BAR: { BAR_MENUBAR: None, BAR_NAVIBAR: None, }, MYCREOLE_ROOT: os.path.join(settings.BASE_DIR, 'data', 'mycreole'), } def __get_object_by_name__(object_name): class_data = object_name.split(".") module_path = ".".join(class_data[:-1]) class_str = class_data[-1] # module = importlib.import_module(module_path) return getattr(module, class_str) def get(key): # take data from config, settings or defaults try: data = getattr(config, key) except AttributeError: try: data = getattr(settings, key) except AttributeError: data = DEFAULTS.get(key) # adapt the data if key in [MYCREOLE_BAR, MYCREOLE_ATTACHMENT_ACCESS]: # Change given string to object rv = {} for skey in DEFAULTS[key]: # take the value from data or the default if skey in data: value = data[skey] else: value = DEFAULTS[key][skey] # take the object or None if value is not None: rv[skey] = __get_object_by_name__(value) else: rv[skey] = None return rv return data