Add tabbed settings view
This commit is contained in:
@@ -5,6 +5,7 @@ from django.utils.importlib import import_module
|
|||||||
|
|
||||||
settings = {}
|
settings = {}
|
||||||
settings_list = []
|
settings_list = []
|
||||||
|
namespaces = {}
|
||||||
namespace_list = []
|
namespace_list = []
|
||||||
|
|
||||||
|
|
||||||
@@ -13,11 +14,13 @@ def is_superuser(context):
|
|||||||
|
|
||||||
|
|
||||||
class SettingNamespace(object):
|
class SettingNamespace(object):
|
||||||
def __init__(self, name, label, module):
|
def __init__(self, name, label, module, sprite=None):
|
||||||
self.name = name
|
self.name = name
|
||||||
self.label = label
|
self.label = label
|
||||||
self.module = module
|
self.module = module
|
||||||
|
self.sprite = sprite
|
||||||
namespace_list.append(self)
|
namespace_list.append(self)
|
||||||
|
namespaces[self.name] = self
|
||||||
|
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return unicode(self.label)
|
return unicode(self.label)
|
||||||
@@ -48,3 +51,5 @@ class Setting(object):
|
|||||||
setattr(self.module, name, value)
|
setattr(self.module, name, value)
|
||||||
|
|
||||||
settings_list.append(self)
|
settings_list.append(self)
|
||||||
|
settings.setdefault(self.namespace.name, [])
|
||||||
|
settings[self.namespace.name].append(self)
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
from django.conf.urls.defaults import patterns, url
|
from django.conf.urls.defaults import patterns, url
|
||||||
|
|
||||||
urlpatterns = patterns('smart_settings.views',
|
urlpatterns = patterns('smart_settings.views',
|
||||||
|
url(r'^list/(?P<namespace_name>\w+)/$', 'setting_list', (), 'setting_list'),
|
||||||
url(r'^list/$', 'setting_list', (), 'setting_list'),
|
url(r'^list/$', 'setting_list', (), 'setting_list'),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -7,14 +7,27 @@ from django.utils.safestring import mark_safe
|
|||||||
|
|
||||||
from common.utils import return_type, encapsulate
|
from common.utils import return_type, encapsulate
|
||||||
from common.widgets import exists_with_famfam
|
from common.widgets import exists_with_famfam
|
||||||
|
from navigation.api import Link
|
||||||
|
|
||||||
from .api import settings_list
|
from .api import settings_list, namespace_list, settings, namespaces
|
||||||
|
from .links import is_superuser
|
||||||
|
|
||||||
|
|
||||||
def setting_list(request):
|
def setting_list(request, namespace_name=None, object_list=None, title=None, extra_context=None):
|
||||||
|
#TODO: check user is super user
|
||||||
|
namespace_links = []
|
||||||
|
for namespace in namespace_list:
|
||||||
|
namespace_links.append(
|
||||||
|
Link(text=namespace.label, view='setting_list', args=[u'"%s"' % namespace.name], sprite=getattr(namespace, 'sprite') or 'cog', condition=is_superuser, children_view_regex=[r'^setting_'])
|
||||||
|
)
|
||||||
|
|
||||||
|
if namespace_name:
|
||||||
|
object_list = [setting for setting in settings[namespace_name] if setting.hidden == False]
|
||||||
|
title = _(u'settings for the %s module') % namespaces[namespace_name]
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
'title': _(u'settings'),
|
'title': title if title else _(u'settings'),
|
||||||
'object_list': [setting for setting in settings_list if setting.hidden == False],
|
'object_list': object_list if not (object_list is None) else [setting for setting in settings_list if setting.hidden == False],
|
||||||
'hide_link': True,
|
'hide_link': True,
|
||||||
'hide_object': True,
|
'hide_object': True,
|
||||||
'extra_columns': [
|
'extra_columns': [
|
||||||
@@ -26,7 +39,17 @@ def setting_list(request):
|
|||||||
)))
|
)))
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
'temporary_navigation_links': {
|
||||||
|
'form_header': {
|
||||||
|
'setting_list': {
|
||||||
|
'links': namespace_links
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if extra_context:
|
||||||
|
context.update(extra_context)
|
||||||
|
|
||||||
return render_to_response('generic_list.html', context,
|
return render_to_response('generic_list.html', context,
|
||||||
context_instance=RequestContext(request))
|
context_instance=RequestContext(request))
|
||||||
|
|||||||
Reference in New Issue
Block a user