Files
mayan-edms/apps/smart_settings/api.py
2012-03-06 16:09:01 -04:00

57 lines
1.8 KiB
Python

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, module):
self.name = name
self.label = label
self.module = module
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')
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, 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)