From d48285e89e7ef29fd2c77c9691b0fa07cf2f1590 Mon Sep 17 00:00:00 2001 From: Ales Zoulek Date: Mon, 23 Aug 2010 14:49:54 +0200 Subject: [PATCH] added admin view interface --- constance/admin.py | 71 +++++++++++++++++++ .../admin/constance/change_list.html | 39 ++++++++++ 2 files changed, 110 insertions(+) create mode 100644 constance/admin.py create mode 100644 constance/templates/admin/constance/change_list.html diff --git a/constance/admin.py b/constance/admin.py new file mode 100644 index 0000000..8cc14cb --- /dev/null +++ b/constance/admin.py @@ -0,0 +1,71 @@ +from django.contrib import admin +from django.utils.functional import update_wrapper +from django.conf.urls.defaults import patterns, url +from django.conf import settings +from django.shortcuts import render_to_response +from django.template.context import RequestContext + +from constance import config + + + +class ConstanceAdmin(admin.ModelAdmin): + + @property + def urls(self): + def wrap(view): + def wrapper(*args, **kwargs): + return self.admin_site.admin_view(view)(*args, **kwargs) + return update_wrapper(wrapper, view) + info = self.model._meta.app_label, self.model._meta.module_name + urlpatterns = patterns('', + url(r'^$', + wrap(self.changelist_view), + name='%s_%s_changelist' % info), + #url(r'^(.+)/$', + # wrap(self.change_view), + # name='%s_%s_change' % info), + ) + return urlpatterns + + def changelist_view(self, request): + context = { + 'config': [], + 'root_path': self.admin_site.root_path, + 'title': 'Live settings', + 'app_label': 'constance', + 'opts': Config._meta, + } + for name, (default, decode, help_text) in settings.CONSTANCE_CONFIG.items(): + context['config'].append({ + 'name': name, + 'default': default, + 'decode': decode, + 'help_text': help_text, + 'value': getattr(config, name), + }) + return render_to_response( + 'admin/constance/change_list.html', + context, + context_instance=RequestContext(request) + ) + + def has_add_permission(self, *args, **kwargs): + return False + + def has_delete_permission(self, *args, **kwargs): + return False + + def has_change_permission(self, *args, **kwargs): + return True + + +class Config(object): + class Meta(object): + app_label = 'constance' + module_name = 'config' + verbose_name_plural = 'config' + _meta = Meta() + + +admin.site.register([Config], ConstanceAdmin) diff --git a/constance/templates/admin/constance/change_list.html b/constance/templates/admin/constance/change_list.html new file mode 100644 index 0000000..b821c68 --- /dev/null +++ b/constance/templates/admin/constance/change_list.html @@ -0,0 +1,39 @@ +{% extends "admin/base_site.html" %} +{% load i18n %} + +{% block content %} +
+
+ + + + + + + + {% for item in config %} + + + + + + + {% endfor %} +
NameValueDefaultDecode
{{item.name}}{{item.value}}{{item.default}}{{item.decode}}
+
+
+{% endblock %} + +{% block breadcrumbs %} + +{% endblock %}