summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorRaffaele Salmaso <raffaele@salmaso.org>2016-12-29 18:51:26 +0100
committerTim Graham <timograham@gmail.com>2018-02-03 18:51:10 -0500
commitda3df5b878d96ef37dcff1377ccbd097b80776d7 (patch)
tree2ded9c48939cfbc3922e3600389872b41ef93b6a /django
parentd0a42a14c06e033922f6d51e6384cba53be887b6 (diff)
Fixed #8500 -- Allowed overriding the default admin site instance.
Diffstat (limited to 'django')
-rw-r--r--django/contrib/admin/apps.py1
-rw-r--r--django/contrib/admin/sites.py14
2 files changed, 13 insertions, 2 deletions
diff --git a/django/contrib/admin/apps.py b/django/contrib/admin/apps.py
index df7d669ab0..36c157683d 100644
--- a/django/contrib/admin/apps.py
+++ b/django/contrib/admin/apps.py
@@ -7,6 +7,7 @@ from django.utils.translation import gettext_lazy as _
class SimpleAdminConfig(AppConfig):
"""Simple AppConfig which does not do automatic discovery."""
+ default_site = 'django.contrib.admin.sites.AdminSite'
name = 'django.contrib.admin'
verbose_name = _("Administration")
diff --git a/django/contrib/admin/sites.py b/django/contrib/admin/sites.py
index a3871fb534..f7d0ac0fbc 100644
--- a/django/contrib/admin/sites.py
+++ b/django/contrib/admin/sites.py
@@ -9,6 +9,8 @@ from django.db.models.base import ModelBase
from django.http import Http404, HttpResponseRedirect
from django.template.response import TemplateResponse
from django.urls import NoReverseMatch, reverse
+from django.utils.functional import LazyObject
+from django.utils.module_loading import import_string
from django.utils.text import capfirst
from django.utils.translation import gettext as _, gettext_lazy
from django.views.decorators.cache import never_cache
@@ -518,6 +520,14 @@ class AdminSite:
], context)
+class DefaultAdminSite(LazyObject):
+ def _setup(self):
+ AdminSiteClass = import_string(apps.get_app_config('admin').default_site)
+ self._wrapped = AdminSiteClass()
+
+
# This global object represents the default admin site, for the common case.
-# You can instantiate AdminSite in your own code to create a custom admin site.
-site = AdminSite()
+# You can provide your own AdminSite using the (Simple)AdminConfig.default_site
+# attribute. You can also instantiate AdminSite in your own code to create a
+# custom admin site.
+site = DefaultAdminSite()