56 lines
1.6 KiB
Python
56 lines
1.6 KiB
Python
from __future__ import absolute_import
|
|
|
|
from django.conf import settings as django_settings
|
|
from django.utils.importlib import import_module
|
|
|
|
settings = {}
|
|
settings_list = []
|
|
namespaces = {}
|
|
namespace_list = []
|
|
|
|
|
|
def is_superuser(context):
|
|
return context['request'].user.is_staff or context['request'].user.is_superuser
|
|
|
|
|
|
class SettingNamespace(object):
|
|
def __init__(self, name, label, module, sprite=None):
|
|
self.name = name
|
|
self.label = label
|
|
self.module = module
|
|
self.sprite = sprite
|
|
namespace_list.append(self)
|
|
namespaces[self.name] = self
|
|
|
|
def __unicode__(self):
|
|
return unicode(self.label)
|
|
|
|
def settings(self):
|
|
return [setting for setting in settings_list if setting.namespace == self]
|
|
|
|
|
|
class Setting(object):
|
|
def __init__(self, namespace, name, global_name, default, description=u'', hidden=False, exists=False):
|
|
self.namespace = namespace
|
|
self.name = name
|
|
self.global_name = global_name
|
|
self.default = default
|
|
self.description = description
|
|
self.hidden = hidden
|
|
self.exists = exists
|
|
|
|
# Get the global value
|
|
value = getattr(django_settings, global_name, default)
|
|
|
|
# Create the local entity
|
|
try:
|
|
self.module = namespace.module
|
|
setattr(self.module, name, value)
|
|
except AttributeError:
|
|
self.module = import_module(namespace.module)
|
|
setattr(self.module, name, value)
|
|
|
|
settings_list.append(self)
|
|
settings.setdefault(self.namespace.name, [])
|
|
settings[self.namespace.name].append(self)
|