Loading django/contrib/admin/checks.py +2 −5 Original line number Diff line number Diff line Loading @@ -11,12 +11,9 @@ from django.forms.models import BaseModelForm, _get_foreign_key, BaseModelFormSe def check_admin_app(**kwargs): from django.contrib.admin.sites import site from django.contrib.admin.sites import system_check_errors return list(chain.from_iterable( model_admin.check(model, **kwargs) for model, model_admin in site._registry.items() )) return system_check_errors class BaseModelAdminChecks(object): Loading django/contrib/admin/sites.py +3 −1 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ from django.utils.translation import ugettext_lazy, ugettext as _ from django.views.decorators.cache import never_cache from django.conf import settings system_check_errors = [] class AlreadyRegistered(Exception): pass Loading Loading @@ -99,7 +101,7 @@ class AdminSite(object): admin_class = type("%sAdmin" % model.__name__, (admin_class,), options) if admin_class is not ModelAdmin and settings.DEBUG: admin_class.check(model) system_check_errors.extend(admin_class.check(model)) # Instantiate the admin class to save in the registry self._registry[model] = admin_class(model, self) Loading docs/releases/1.7.2.txt +2 −0 Original line number Diff line number Diff line Loading @@ -149,3 +149,5 @@ Bugfixes * Restored the ``pre_migrate`` signal if all apps have migrations (:ticket:`23975`). * Made admin system checks run for custom ``AdminSite``\s (:ticket:`23497`). tests/admin_checks/tests.py +23 −5 Original line number Diff line number Diff line Loading @@ -35,18 +35,20 @@ class ValidFormFieldsets(admin.ModelAdmin): ) class MyAdmin(admin.ModelAdmin): @classmethod def check(cls, model, **kwargs): return ['error!'] @override_settings( SILENCED_SYSTEM_CHECKS=['fields.W342'], # ForeignKey(unique=True) INSTALLED_APPS=['django.contrib.auth', 'django.contrib.contenttypes', 'admin_checks'] ) class SystemChecksTestCase(TestCase): @override_settings(DEBUG=True) def test_checks_are_performed(self): class MyAdmin(admin.ModelAdmin): @classmethod def check(self, model, **kwargs): return ['error!'] admin.site.register(Song, MyAdmin) try: errors = checks.run_checks() Loading @@ -54,6 +56,22 @@ class SystemChecksTestCase(TestCase): self.assertEqual(errors, expected) finally: admin.site.unregister(Song) admin.sites.system_check_errors = [] @override_settings(DEBUG=True) def test_custom_adminsite(self): class CustomAdminSite(admin.AdminSite): pass custom_site = CustomAdminSite() custom_site.register(Song, MyAdmin) try: errors = checks.run_checks() expected = ['error!'] self.assertEqual(errors, expected) finally: custom_site.unregister(Song) admin.sites.system_check_errors = [] def test_readonly_and_editable(self): class SongAdmin(admin.ModelAdmin): Loading Loading
django/contrib/admin/checks.py +2 −5 Original line number Diff line number Diff line Loading @@ -11,12 +11,9 @@ from django.forms.models import BaseModelForm, _get_foreign_key, BaseModelFormSe def check_admin_app(**kwargs): from django.contrib.admin.sites import site from django.contrib.admin.sites import system_check_errors return list(chain.from_iterable( model_admin.check(model, **kwargs) for model, model_admin in site._registry.items() )) return system_check_errors class BaseModelAdminChecks(object): Loading
django/contrib/admin/sites.py +3 −1 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ from django.utils.translation import ugettext_lazy, ugettext as _ from django.views.decorators.cache import never_cache from django.conf import settings system_check_errors = [] class AlreadyRegistered(Exception): pass Loading Loading @@ -99,7 +101,7 @@ class AdminSite(object): admin_class = type("%sAdmin" % model.__name__, (admin_class,), options) if admin_class is not ModelAdmin and settings.DEBUG: admin_class.check(model) system_check_errors.extend(admin_class.check(model)) # Instantiate the admin class to save in the registry self._registry[model] = admin_class(model, self) Loading
docs/releases/1.7.2.txt +2 −0 Original line number Diff line number Diff line Loading @@ -149,3 +149,5 @@ Bugfixes * Restored the ``pre_migrate`` signal if all apps have migrations (:ticket:`23975`). * Made admin system checks run for custom ``AdminSite``\s (:ticket:`23497`).
tests/admin_checks/tests.py +23 −5 Original line number Diff line number Diff line Loading @@ -35,18 +35,20 @@ class ValidFormFieldsets(admin.ModelAdmin): ) class MyAdmin(admin.ModelAdmin): @classmethod def check(cls, model, **kwargs): return ['error!'] @override_settings( SILENCED_SYSTEM_CHECKS=['fields.W342'], # ForeignKey(unique=True) INSTALLED_APPS=['django.contrib.auth', 'django.contrib.contenttypes', 'admin_checks'] ) class SystemChecksTestCase(TestCase): @override_settings(DEBUG=True) def test_checks_are_performed(self): class MyAdmin(admin.ModelAdmin): @classmethod def check(self, model, **kwargs): return ['error!'] admin.site.register(Song, MyAdmin) try: errors = checks.run_checks() Loading @@ -54,6 +56,22 @@ class SystemChecksTestCase(TestCase): self.assertEqual(errors, expected) finally: admin.site.unregister(Song) admin.sites.system_check_errors = [] @override_settings(DEBUG=True) def test_custom_adminsite(self): class CustomAdminSite(admin.AdminSite): pass custom_site = CustomAdminSite() custom_site.register(Song, MyAdmin) try: errors = checks.run_checks() expected = ['error!'] self.assertEqual(errors, expected) finally: custom_site.unregister(Song) admin.sites.system_check_errors = [] def test_readonly_and_editable(self): class SongAdmin(admin.ModelAdmin): Loading