summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorPrzemysław Buczkowski <przemub@creditdigital.co.uk>2018-09-13 13:36:14 +0100
committerTim Graham <timograham@gmail.com>2018-10-02 09:17:23 -0400
commit70d0a1ca02f42c0f8984b6234ca0f9d7e354a135 (patch)
tree11a9e6d5c92e55124567da316204f977bd3ef0ca /django
parent7598cd4748dc402b0209e5eedb6d2a83c3da1620 (diff)
Fixed #29711 -- Added a system check for uniquness of admin actions' __name__.
Diffstat (limited to 'django')
-rw-r--r--django/contrib/admin/checks.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/django/contrib/admin/checks.py b/django/contrib/admin/checks.py
index d129acb124..4007a781fb 100644
--- a/django/contrib/admin/checks.py
+++ b/django/contrib/admin/checks.py
@@ -606,6 +606,7 @@ class ModelAdminChecks(BaseModelAdminChecks):
*self._check_search_fields(admin_obj),
*self._check_date_hierarchy(admin_obj),
*self._check_action_permission_methods(admin_obj),
+ *self._check_actions_uniqueness(admin_obj),
]
def _check_save_as(self, obj):
@@ -944,6 +945,18 @@ class ModelAdminChecks(BaseModelAdminChecks):
)
return errors
+ def _check_actions_uniqueness(self, obj):
+ """Check that every action has a unique __name__."""
+ names = [name for _, name, _ in obj._get_base_actions()]
+ if len(names) != len(set(names)):
+ return [checks.Error(
+ '__name__ attributes of actions defined in %s must be '
+ 'unique.' % obj.__class__,
+ obj=obj.__class__,
+ id='admin.E130',
+ )]
+ return []
+
class InlineModelAdminChecks(BaseModelAdminChecks):