Hi,
A recent bug report [1] brought up the fact that ModelAdmin collects actions from superclasses. For example:
class BaseAdmin:
actions = ['a']
class SubAdmin(BaseAdmin):
actions = ['b']
SubAdmin will have action 'a' and 'b'. The behavior isn't tested and only mentioned in passing in docs for ModelAdmin.get_action(), "Most of the time you’ll use this method to conditionally remove actions from the list gathered by the superclass."
I think the reason for the "collect from superclasses" behavior was to inherit the "delete_selected" action from BaseModelAdmin, however, that reason was obsoleted in a later commit where AdminSite actions were added and delete_selected was moved there.
I propose removing this surprising (to me, at least) behavior and follow normal Python inheritance. If someone wants to inherit actions from a subclass, they should use:
class SubAdmin(BaseAdmin):
actions = BaseAdmin.actions + ['b']