#29917: admin.E130 (__name__ uniqueness) regression
-------------------------------------+-------------------------------------
     Reporter:  Matthias Kestenholz  |                    Owner:  nobody
         Type:  Bug                  |                   Status:  new
    Component:  contrib.admin        |                  Version:  master
     Severity:  Normal               |               Resolution:
     Keywords:                       |             Triage Stage:
                                     |  Unreviewed
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------

Comment (by Matthias Kestenholz):

 It's quite interesting. Django does not have any tests verifying the MRO
 behavior. The complete test suite still passes after applying the
 following patch:


 {{{
 diff --git a/django/contrib/admin/options.py
 b/django/contrib/admin/options.py
 index 241d22e82a..07521e3df3 100644
 --- a/django/contrib/admin/options.py
 +++ b/django/contrib/admin/options.py
 @@ -862,9 +862,11 @@ class ModelAdmin(BaseModelAdmin):

 -        # Then gather them from the model admin and all parent classes,
 -        # starting with self and working back up.
 -        for klass in self.__class__.mro()[::-1]:
 -            class_actions = getattr(klass, 'actions', []) or []
 -            actions.extend(self.get_action(action) for action in
 class_actions)
 +        actions.extend(self.get_action(action) for action in
 (getattr(self, 'actions', None) or []))

          # get_action might have returned None, so filter any of those
 out.
          return filter(None, actions)
 }}}

 People might rely on it though, so silently introducing this change is out
 of the question. I propose the following changes to Django:

 - Apply the patch above.
 - Add a new system check which warns users when the `actions` attribute of
 registered model admin classes does not contain a superset of the
 `actions` attribute of all it's bases (recursively). This cannot be made
 an error because actions might be excluded on purpose.
 - I'm not sure whether documentation changes are necessary -- this
 proposal does not change documented behavior (AFAIK)

-- 
Ticket URL: <https://code.djangoproject.com/ticket/29917#comment:6>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/067.68ebd30d5c22eda9f452b9cb03e65932%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to