Facilitate renaming Constance in Admin (#173)

* Load app_config dynamically and use verbose_name

* Instead of assuming the app config is always going to be ConstanceConfig, load it dynamically in case the user overrides it
* Use verbose_name for page title instead of static strings for create_list
* Use verbose_name for create_list breadcrumbs

These changes allows the user to easily rename "Constance" to something else in their project.

* Fix use of verbose_name in title and breadcrumbs
This commit is contained in:
Rares Vernica 2016-11-16 23:42:55 -08:00 committed by Jannis Leidel
parent c4f350e0f3
commit 70f1043bad
2 changed files with 7 additions and 6 deletions

View file

@ -5,6 +5,7 @@ from operator import itemgetter
from collections import OrderedDict
from django import forms, VERSION
from django.apps import apps
from django.conf.urls import url
from django.contrib import admin, messages
from django.contrib.admin import widgets
@ -20,7 +21,7 @@ from django.utils.module_loading import import_string
from django.utils.translation import ugettext_lazy as _
from . import LazyConfig, settings, apps
from . import LazyConfig, settings
config = LazyConfig()
@ -190,7 +191,7 @@ class ConstanceAdmin(admin.ModelAdmin):
return HttpResponseRedirect('.')
context = {
'config_values': [],
'title': _('Constance config'),
'title': self.model._meta.app_config.verbose_name,
'app_label': 'constance',
'opts': self.model._meta,
'form': form,
@ -255,12 +256,12 @@ class Config(object):
def get_change_permission(self):
return 'change_%s' % self.model_name
@property
def app_config(self):
return apps.ConstanceConfig
return apps.get_app_config(self.app_label)
_meta = Meta()
admin.site.register([Config], ConstanceAdmin)

View file

@ -75,7 +75,7 @@
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ app_label|capfirst|escape }}</a>
&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_config.verbose_name }}</a>
&rsaquo; {{ opts.verbose_name_plural|capfirst }}
</div>
{% endblock %}