summaryrefslogtreecommitdiff
path: root/django/contrib/admin
diff options
context:
space:
mode:
authorAdam Donaghy <adamdonaghy1994@gmail.com>2020-01-06 22:10:40 +1100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-01-10 14:00:28 +0100
commit8b3e714ecf409ed6c9628c3f2a4e033cbfa4253b (patch)
treea73fd0ff983283482318a9465d0beb3ccefb5497 /django/contrib/admin
parente2d9d66a22f9004c0349f6aa9f8762fa558bdee8 (diff)
Fixed #30980 -- Improved error message when checking uniqueness of admin actions' __name__.
Thanks Keshav Kumar for the initial patch.
Diffstat (limited to 'django/contrib/admin')
-rw-r--r--django/contrib/admin/checks.py24
1 files changed, 15 insertions, 9 deletions
diff --git a/django/contrib/admin/checks.py b/django/contrib/admin/checks.py
index 0c32301284..ba754bd873 100644
--- a/django/contrib/admin/checks.py
+++ b/django/contrib/admin/checks.py
@@ -1,3 +1,4 @@
+import collections
from itertools import chain
from django.apps import apps
@@ -985,15 +986,20 @@ class ModelAdminChecks(BaseModelAdminChecks):
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 []
+ errors = []
+ names = collections.Counter(name for _, name, _ in obj._get_base_actions())
+ for name, count in names.items():
+ if count > 1:
+ errors.append(checks.Error(
+ '__name__ attributes of actions defined in %s must be '
+ 'unique. Name %r is not unique.' % (
+ obj.__class__.__name__,
+ name,
+ ),
+ obj=obj.__class__,
+ id='admin.E130',
+ ))
+ return errors
class InlineModelAdminChecks(BaseModelAdminChecks):