mirror of https://github.com/django/django.git
Fixed #35237 -- Merged system checks for admin actions.
This commit is contained in:
parent
a084c5d35a
commit
98e6f2396c
|
@ -816,8 +816,7 @@ class ModelAdminChecks(BaseModelAdminChecks):
|
||||||
*self._check_list_editable(admin_obj),
|
*self._check_list_editable(admin_obj),
|
||||||
*self._check_search_fields(admin_obj),
|
*self._check_search_fields(admin_obj),
|
||||||
*self._check_date_hierarchy(admin_obj),
|
*self._check_date_hierarchy(admin_obj),
|
||||||
*self._check_action_permission_methods(admin_obj),
|
*self._check_actions(admin_obj),
|
||||||
*self._check_actions_uniqueness(admin_obj),
|
|
||||||
]
|
]
|
||||||
|
|
||||||
def _check_save_as(self, obj):
|
def _check_save_as(self, obj):
|
||||||
|
@ -1195,13 +1194,12 @@ class ModelAdminChecks(BaseModelAdminChecks):
|
||||||
else:
|
else:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
def _check_action_permission_methods(self, obj):
|
def _check_actions(self, obj):
|
||||||
"""
|
|
||||||
Actions with an allowed_permission attribute require the ModelAdmin to
|
|
||||||
implement a has_<perm>_permission() method for each permission.
|
|
||||||
"""
|
|
||||||
actions = obj._get_base_actions()
|
|
||||||
errors = []
|
errors = []
|
||||||
|
actions = obj._get_base_actions()
|
||||||
|
|
||||||
|
# Actions with an allowed_permission attribute require the ModelAdmin
|
||||||
|
# to implement a has_<perm>_permission() method for each permission.
|
||||||
for func, name, _ in actions:
|
for func, name, _ in actions:
|
||||||
if not hasattr(func, "allowed_permissions"):
|
if not hasattr(func, "allowed_permissions"):
|
||||||
continue
|
continue
|
||||||
|
@ -1220,12 +1218,8 @@ class ModelAdminChecks(BaseModelAdminChecks):
|
||||||
id="admin.E129",
|
id="admin.E129",
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
return errors
|
# Names need to be unique.
|
||||||
|
names = collections.Counter(name for _, name, _ in actions)
|
||||||
def _check_actions_uniqueness(self, obj):
|
|
||||||
"""Check that every action has a unique __name__."""
|
|
||||||
errors = []
|
|
||||||
names = collections.Counter(name for _, name, _ in obj._get_base_actions())
|
|
||||||
for name, count in names.items():
|
for name, count in names.items():
|
||||||
if count > 1:
|
if count > 1:
|
||||||
errors.append(
|
errors.append(
|
||||||
|
|
|
@ -1033,7 +1033,10 @@ class ModelAdmin(BaseModelAdmin):
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _get_action_description(func, name):
|
def _get_action_description(func, name):
|
||||||
return getattr(func, "short_description", capfirst(name.replace("_", " ")))
|
try:
|
||||||
|
return func.short_description
|
||||||
|
except AttributeError:
|
||||||
|
return capfirst(name.replace("_", " "))
|
||||||
|
|
||||||
def _get_base_actions(self):
|
def _get_base_actions(self):
|
||||||
"""Return the list of actions, prior to any request-based filtering."""
|
"""Return the list of actions, prior to any request-based filtering."""
|
||||||
|
|
Loading…
Reference in New Issue