Refs #24121 -- Added __repr__() to AdminSite, DefaultAdminSite, and ModelAdmin.
Thanks tlebrize for the initial patch.
This commit is contained in:
parent
fa35c8bdbc
commit
e4da365436
|
@ -594,6 +594,12 @@ class ModelAdmin(BaseModelAdmin):
|
|||
def __str__(self):
|
||||
return "%s.%s" % (self.model._meta.app_label, self.__class__.__name__)
|
||||
|
||||
def __repr__(self):
|
||||
return (
|
||||
f'<{self.__class__.__qualname__}: model={self.model.__qualname__} '
|
||||
f'site={self.admin_site!r}>'
|
||||
)
|
||||
|
||||
def get_inline_instances(self, request, obj=None):
|
||||
inline_instances = []
|
||||
for inline_class in self.get_inlines(request, obj):
|
||||
|
|
|
@ -77,6 +77,9 @@ class AdminSite:
|
|||
self._global_actions = self._actions.copy()
|
||||
all_sites.add(self)
|
||||
|
||||
def __repr__(self):
|
||||
return f'{self.__class__.__name__}(name={self.name!r})'
|
||||
|
||||
def check(self, app_configs):
|
||||
"""
|
||||
Run the system checks on all ModelAdmins, except if they aren't
|
||||
|
@ -561,6 +564,9 @@ class DefaultAdminSite(LazyObject):
|
|||
AdminSiteClass = import_string(apps.get_app_config('admin').default_site)
|
||||
self._wrapped = AdminSiteClass()
|
||||
|
||||
def __repr__(self):
|
||||
return repr(self._wrapped)
|
||||
|
||||
|
||||
# This global object represents the default admin site, for the common case.
|
||||
# You can provide your own AdminSite using the (Simple)AdminConfig.default_site
|
||||
|
|
|
@ -2,6 +2,8 @@ from django.contrib import admin
|
|||
from django.contrib.admin import sites
|
||||
from django.test import SimpleTestCase, override_settings
|
||||
|
||||
from .sites import CustomAdminSite
|
||||
|
||||
|
||||
@override_settings(INSTALLED_APPS=[
|
||||
'admin_default_site.apps.MyCustomAdminConfig',
|
||||
|
@ -29,3 +31,13 @@ class CustomAdminSiteTests(SimpleTestCase):
|
|||
class DefaultAdminSiteTests(SimpleTestCase):
|
||||
def test_use_default_admin_site(self):
|
||||
self.assertEqual(admin.site.__class__.__name__, 'AdminSite')
|
||||
|
||||
def test_repr(self):
|
||||
self.assertEqual(str(admin.site), "AdminSite(name='admin')")
|
||||
self.assertEqual(repr(admin.site), "AdminSite(name='admin')")
|
||||
|
||||
|
||||
class AdminSiteTests(SimpleTestCase):
|
||||
def test_repr(self):
|
||||
admin_site = CustomAdminSite(name='other')
|
||||
self.assertEqual(repr(admin_site), "CustomAdminSite(name='other')")
|
||||
|
|
|
@ -722,6 +722,13 @@ class ModelAdminTests(TestCase):
|
|||
self.assertEqual(perms_needed, {'band'})
|
||||
self.assertEqual(protected, [])
|
||||
|
||||
def test_modeladmin_repr(self):
|
||||
ma = ModelAdmin(Band, self.site)
|
||||
self.assertEqual(
|
||||
repr(ma),
|
||||
"<ModelAdmin: model=Band site=AdminSite(name='admin')>",
|
||||
)
|
||||
|
||||
|
||||
class ModelAdminPermissionTests(SimpleTestCase):
|
||||
|
||||
|
|
Loading…
Reference in New Issue