diff --git a/constance/admin.py b/constance/admin.py index bb7e523..459e47a 100644 --- a/constance/admin.py +++ b/constance/admin.py @@ -57,6 +57,10 @@ class ConstanceAdmin(admin.ModelAdmin): self.admin_site.admin_view(self.changelist_view), name='%s_%s_changelist' % info ), + url(r'^$', + self.admin_site.admin_view(self.changelist_view), + name='%s_%s_add' % info + ), ) @csrf_protect_m @@ -76,7 +80,6 @@ class ConstanceAdmin(admin.ModelAdmin): return HttpResponseRedirect('.') context = { 'config': [], - 'root_path': self.admin_site.root_path, 'title': _('Constance config'), 'app_label': 'constance', 'opts': Config._meta, @@ -108,8 +111,11 @@ class ConstanceAdmin(admin.ModelAdmin): def has_delete_permission(self, *args, **kwargs): return False - def has_change_permission(self, *args, **kwargs): - return True + def has_change_permission(self, request, obj=None, *args, **kwargs): + if request.user.is_superuser: + return True + else: + return False class Config(object): diff --git a/constance/backends/database/__init__.py b/constance/backends/database/__init__.py index 6798480..4d93566 100644 --- a/constance/backends/database/__init__.py +++ b/constance/backends/database/__init__.py @@ -56,4 +56,4 @@ class DatabaseBackend(Backend): def clear(self, sender, instance, created, **kwargs): if db_cache and not created: - db_cache.clear() + db_cache.delete_many(settings.CONFIG.keys()) diff --git a/constance/config.py b/constance/config.py index 79751db..ed2afbc 100644 --- a/constance/config.py +++ b/constance/config.py @@ -26,4 +26,4 @@ class Config(object): self._backend.set(key, value) def __dir__(self): - return settings.CONFIG.iterkeys() + return settings.CONFIG.keys()