From 92604246c2aa855b69b22c90939e24807e25603f Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Mon, 5 Mar 2012 03:09:26 -0400 Subject: [PATCH] Add Setting and SettingName classed --- apps/smart_settings/api.py | 53 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/apps/smart_settings/api.py b/apps/smart_settings/api.py index 51ff694320..07cb0bf81b 100644 --- a/apps/smart_settings/api.py +++ b/apps/smart_settings/api.py @@ -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):