diff options
| author | Adam Donaghy <adamdonaghy1994@gmail.com> | 2020-01-06 22:10:40 +1100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-01-10 14:00:28 +0100 |
| commit | 8b3e714ecf409ed6c9628c3f2a4e033cbfa4253b (patch) | |
| tree | a73fd0ff983283482318a9465d0beb3ccefb5497 /django/contrib/admin | |
| parent | e2d9d66a22f9004c0349f6aa9f8762fa558bdee8 (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.py | 24 |
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): |
