summaryrefslogtreecommitdiff
path: root/django/contrib/admin/options.py
diff options
context:
space:
mode:
Diffstat (limited to 'django/contrib/admin/options.py')
-rw-r--r--django/contrib/admin/options.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py
index 2099d14861..2913107b9c 100644
--- a/django/contrib/admin/options.py
+++ b/django/contrib/admin/options.py
@@ -858,15 +858,20 @@ class ModelAdmin(BaseModelAdmin):
def _get_base_actions(self):
"""Return the list of actions, prior to any request-based filtering."""
actions = []
+ base_actions = (self.get_action(action) for action in self.actions or [])
+ # get_action might have returned None, so filter any of those out.
+ base_actions = [action for action in base_actions if action]
+ base_action_names = {name for _, name, _ in base_actions}
# Gather actions from the admin site first
for (name, func) in self.admin_site.actions:
+ if name in base_action_names:
+ continue
description = getattr(func, 'short_description', name.replace('_', ' '))
actions.append((func, name, description))
# Add actions from this ModelAdmin.
- actions.extend(self.get_action(action) for action in self.actions or [])
- # get_action might have returned None, so filter any of those out.
- return filter(None, actions)
+ actions.extend(base_actions)
+ return actions
def _filter_actions_by_permissions(self, request, actions):
"""Filter out any actions that the user doesn't have access to."""