summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2023-07-07 08:06:01 +0200
committerGitHub <noreply@github.com>2023-07-07 08:06:01 +0200
commitf64fd47a7627ed6ffe2df2a32ded6ee528a784eb (patch)
tree1abf1f8f945e9b72a72d31ec00f356e1088c4538 /tests
parentd569c1dcfeb26ca9ee391e5dfeadedf2b5ed4253 (diff)
Fixed #9602 -- Added AdminSite.get_model_admin().
This allows retrieving an admin class for the given model class without using internal attributes.
Diffstat (limited to 'tests')
-rw-r--r--tests/admin_changelist/tests.py4
-rw-r--r--tests/admin_checks/tests.py3
-rw-r--r--tests/admin_ordering/tests.py4
-rw-r--r--tests/admin_registration/tests.py42
-rw-r--r--tests/admin_views/test_autocomplete_view.py8
-rw-r--r--tests/gis_tests/geoadmin/tests.py10
-rw-r--r--tests/modeladmin/tests.py4
7 files changed, 46 insertions, 29 deletions
diff --git a/tests/admin_changelist/tests.py b/tests/admin_changelist/tests.py
index 176b49c66c..8fdd343b18 100644
--- a/tests/admin_changelist/tests.py
+++ b/tests/admin_changelist/tests.py
@@ -878,7 +878,7 @@ class ChangeListTests(TestCase):
user_parents = self._create_superuser("parents")
# Test with user 'noparents'
- m = custom_site._registry[Child]
+ m = custom_site.get_model_admin(Child)
request = self._mocked_authenticated_request("/child/", user_noparents)
response = m.changelist_view(request)
self.assertNotContains(response, "Parent object")
@@ -903,7 +903,7 @@ class ChangeListTests(TestCase):
# Test default implementation
custom_site.register(Child, ChildAdmin)
- m = custom_site._registry[Child]
+ m = custom_site.get_model_admin(Child)
request = self._mocked_authenticated_request("/child/", user_noparents)
response = m.changelist_view(request)
self.assertContains(response, "Parent object")
diff --git a/tests/admin_checks/tests.py b/tests/admin_checks/tests.py
index 417c8504ed..d2d1eb219e 100644
--- a/tests/admin_checks/tests.py
+++ b/tests/admin_checks/tests.py
@@ -276,8 +276,7 @@ class SystemChecksTestCase(SimpleTestCase):
class MyBookAdmin(admin.ModelAdmin):
def check(self, **kwargs):
errors = super().check(**kwargs)
- author_admin = self.admin_site._registry.get(Author)
- if author_admin is None:
+ if not self.admin_site.is_registered(Author):
errors.append("AuthorAdmin missing!")
return errors
diff --git a/tests/admin_ordering/tests.py b/tests/admin_ordering/tests.py
index 486e222d01..57f8fc7c6f 100644
--- a/tests/admin_ordering/tests.py
+++ b/tests/admin_ordering/tests.py
@@ -152,10 +152,10 @@ class TestRelatedFieldsAdminOrdering(TestCase):
site.unregister(Band)
def check_ordering_of_field_choices(self, correct_ordering):
- fk_field = site._registry[Song].formfield_for_foreignkey(
+ fk_field = site.get_model_admin(Song).formfield_for_foreignkey(
Song.band.field, request=None
)
- m2m_field = site._registry[Song].formfield_for_manytomany(
+ m2m_field = site.get_model_admin(Song).formfield_for_manytomany(
Song.other_interpreters.field, request=None
)
self.assertEqual(list(fk_field.queryset), correct_ordering)
diff --git a/tests/admin_registration/tests.py b/tests/admin_registration/tests.py
index 25f317d322..c8caf3f202 100644
--- a/tests/admin_registration/tests.py
+++ b/tests/admin_registration/tests.py
@@ -22,13 +22,13 @@ class TestRegistration(SimpleTestCase):
def test_bare_registration(self):
self.site.register(Person)
- self.assertIsInstance(self.site._registry[Person], admin.ModelAdmin)
+ self.assertIsInstance(self.site.get_model_admin(Person), admin.ModelAdmin)
self.site.unregister(Person)
self.assertEqual(self.site._registry, {})
def test_registration_with_model_admin(self):
self.site.register(Person, NameAdmin)
- self.assertIsInstance(self.site._registry[Person], NameAdmin)
+ self.assertIsInstance(self.site.get_model_admin(Person), NameAdmin)
self.site.unregister(Person)
self.assertEqual(self.site._registry, {})
@@ -57,22 +57,28 @@ class TestRegistration(SimpleTestCase):
def test_registration_with_star_star_options(self):
self.site.register(Person, search_fields=["name"])
- self.assertEqual(self.site._registry[Person].search_fields, ["name"])
+ self.assertEqual(self.site.get_model_admin(Person).search_fields, ["name"])
+
+ def test_get_model_admin_unregister_model(self):
+ msg = "The model Person is not registered."
+ with self.assertRaisesMessage(admin.sites.NotRegistered, msg):
+ self.site.get_model_admin(Person)
def test_star_star_overrides(self):
self.site.register(
Person, NameAdmin, search_fields=["name"], list_display=["__str__"]
)
- self.assertEqual(self.site._registry[Person].search_fields, ["name"])
- self.assertEqual(self.site._registry[Person].list_display, ["__str__"])
- self.assertTrue(self.site._registry[Person].save_on_top)
+ person_admin = self.site.get_model_admin(Person)
+ self.assertEqual(person_admin.search_fields, ["name"])
+ self.assertEqual(person_admin.list_display, ["__str__"])
+ self.assertIs(person_admin.save_on_top, True)
def test_iterable_registration(self):
self.site.register([Person, Place], search_fields=["name"])
- self.assertIsInstance(self.site._registry[Person], admin.ModelAdmin)
- self.assertEqual(self.site._registry[Person].search_fields, ["name"])
- self.assertIsInstance(self.site._registry[Place], admin.ModelAdmin)
- self.assertEqual(self.site._registry[Place].search_fields, ["name"])
+ self.assertIsInstance(self.site.get_model_admin(Person), admin.ModelAdmin)
+ self.assertEqual(self.site.get_model_admin(Person).search_fields, ["name"])
+ self.assertIsInstance(self.site.get_model_admin(Place), admin.ModelAdmin)
+ self.assertEqual(self.site.get_model_admin(Place).search_fields, ["name"])
self.site.unregister([Person, Place])
self.assertEqual(self.site._registry, {})
@@ -116,18 +122,26 @@ class TestRegistrationDecorator(SimpleTestCase):
def test_basic_registration(self):
register(Person)(NameAdmin)
- self.assertIsInstance(self.default_site._registry[Person], admin.ModelAdmin)
+ self.assertIsInstance(
+ self.default_site.get_model_admin(Person), admin.ModelAdmin
+ )
self.default_site.unregister(Person)
def test_custom_site_registration(self):
register(Person, site=self.custom_site)(NameAdmin)
- self.assertIsInstance(self.custom_site._registry[Person], admin.ModelAdmin)
+ self.assertIsInstance(
+ self.custom_site.get_model_admin(Person), admin.ModelAdmin
+ )
def test_multiple_registration(self):
register(Traveler, Place)(NameAdmin)
- self.assertIsInstance(self.default_site._registry[Traveler], admin.ModelAdmin)
+ self.assertIsInstance(
+ self.default_site.get_model_admin(Traveler), admin.ModelAdmin
+ )
self.default_site.unregister(Traveler)
- self.assertIsInstance(self.default_site._registry[Place], admin.ModelAdmin)
+ self.assertIsInstance(
+ self.default_site.get_model_admin(Place), admin.ModelAdmin
+ )
self.default_site.unregister(Place)
def test_wrapped_class_not_a_model_admin(self):
diff --git a/tests/admin_views/test_autocomplete_view.py b/tests/admin_views/test_autocomplete_view.py
index 90533ea5b0..f8ab32717a 100644
--- a/tests/admin_views/test_autocomplete_view.py
+++ b/tests/admin_views/test_autocomplete_view.py
@@ -3,6 +3,7 @@ import json
from contextlib import contextmanager
from django.contrib import admin
+from django.contrib.admin.sites import NotRegistered
from django.contrib.admin.tests import AdminSeleniumTestCase
from django.contrib.admin.views.autocomplete import AutocompleteJsonView
from django.contrib.auth.models import Permission, User
@@ -61,8 +62,11 @@ site.register(Toy, autocomplete_fields=["child"])
@contextmanager
def model_admin(model, model_admin, admin_site=site):
- org_admin = admin_site._registry.get(model)
- if org_admin:
+ try:
+ org_admin = admin_site.get_model_admin(model)
+ except NotRegistered:
+ org_admin = None
+ else:
admin_site.unregister(model)
admin_site.register(model, model_admin)
try:
diff --git a/tests/gis_tests/geoadmin/tests.py b/tests/gis_tests/geoadmin/tests.py
index a7e5700b49..869307328e 100644
--- a/tests/gis_tests/geoadmin/tests.py
+++ b/tests/gis_tests/geoadmin/tests.py
@@ -9,7 +9,7 @@ class GeoAdminTest(SimpleTestCase):
admin_site = site # ModelAdmin
def test_widget_empty_string(self):
- geoadmin = self.admin_site._registry[City]
+ geoadmin = self.admin_site.get_model_admin(City)
form = geoadmin.get_changelist_form(None)({"point": ""})
with self.assertRaisesMessage(AssertionError, "no logs"):
with self.assertLogs("django.contrib.gis", "ERROR"):
@@ -21,7 +21,7 @@ class GeoAdminTest(SimpleTestCase):
)
def test_widget_invalid_string(self):
- geoadmin = self.admin_site._registry[City]
+ geoadmin = self.admin_site.get_model_admin(City)
form = geoadmin.get_changelist_form(None)({"point": "INVALID()"})
with self.assertLogs("django.contrib.gis", "ERROR") as cm:
output = str(form["point"])
@@ -38,7 +38,7 @@ class GeoAdminTest(SimpleTestCase):
)
def test_widget_has_changed(self):
- geoadmin = self.admin_site._registry[City]
+ geoadmin = self.admin_site.get_model_admin(City)
form = geoadmin.get_changelist_form(None)()
has_changed = form.fields["point"].has_changed
@@ -59,7 +59,7 @@ class GISAdminTests(GeoAdminTest):
admin_site = site_gis # GISModelAdmin
def test_default_gis_widget_kwargs(self):
- geoadmin = self.admin_site._registry[City]
+ geoadmin = self.admin_site.get_model_admin(City)
form = geoadmin.get_changelist_form(None)()
widget = form["point"].field.widget
self.assertEqual(widget.attrs["default_lat"], 47)
@@ -67,7 +67,7 @@ class GISAdminTests(GeoAdminTest):
self.assertEqual(widget.attrs["default_zoom"], 12)
def test_custom_gis_widget_kwargs(self):
- geoadmin = site_gis_custom._registry[City]
+ geoadmin = site_gis_custom.get_model_admin(City)
form = geoadmin.get_changelist_form(None)()
widget = form["point"].field.widget
self.assertEqual(widget.attrs["default_lat"], 55)
diff --git a/tests/modeladmin/tests.py b/tests/modeladmin/tests.py
index 627029c9cf..f2763ecc0f 100644
--- a/tests/modeladmin/tests.py
+++ b/tests/modeladmin/tests.py
@@ -871,7 +871,7 @@ class ModelAdminTests(TestCase):
username="bob", email="bob@test.com", password="test"
)
self.site.register(Band, ModelAdmin)
- ma = self.site._registry[Band]
+ ma = self.site.get_model_admin(Band)
(
deletable_objects,
model_count,
@@ -898,7 +898,7 @@ class ModelAdminTests(TestCase):
return False
self.site.register(Band, TestModelAdmin)
- ma = self.site._registry[Band]
+ ma = self.site.get_model_admin(Band)
(
deletable_objects,
model_count,