Add Setting and SettingName classed

This commit is contained in:
Roberto Rosario
2012-03-05 03:09:26 -04:00
parent fd81ba7a6d
commit 92604246c2

View File

@@ -1,7 +1,60 @@
from __future__ import absolute_import
from django.conf import settings as django_settings
from django.utils.importlib import import_module
from django.utils.translation import ugettext_lazy as _
from navigation.api import register_links
settings = {}
settings_list = []
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):
self.name = name
self.label = label
link = {'text': 'LINK', 'view': 'settings_list', 'args': name, 'famfam': 'pencil_add'}#, 'permissions': [PERMISSION_SIGNATURE_UPLOAD], 'conditional_disable': has_embedded_signature}
register_links(['about_view'], [link], menu_name='sidebar')
print 'namespace', self
namespace_list.append(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, module, name, global_name, default, description=None, 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:
setattr(module, name, value)
self.module = module
except AttributeError:
self.module = import_module(module)
setattr(self.module, name, value)
settings_list.append(self)
def register_setting(namespace, module, name, global_name, default, exists=False, description=u'', hidden=False):