#27991: InlineModelAdmin's has_add_permission method doesn't accept instance
argument
-----------------------------------------+------------------------
               Reporter:  Olivier        |          Owner:  nobody
                   Type:  Uncategorized  |         Status:  new
              Component:  Uncategorized  |        Version:  1.10
               Severity:  Normal         |       Keywords:
           Triage Stage:  Unreviewed     |      Has patch:  0
    Needs documentation:  0              |    Needs tests:  0
Patch needs improvement:  0              |  Easy pickings:  0
                  UI/UX:  0              |
-----------------------------------------+------------------------
 Hi !

 {{{InlineModelAdmin}}} has the following methods :

 {{{
 def has_add_permission(self, request):
     ...
 def has_change_permission(self, request, obj=None):
     ...
 def has_delete_permission(self, request, obj=None):
     ...
 }}}

 In those methods, the {{{obj}}} parameter represents the parent instance.
 So, by overriding {{{ModelInline.has_change_permission}}} you can have
 some specific logic to define whether an user can change inlines objects
 depending on the parent object.

 The thing is that the {{{has_add_permission}}} misses this argument. It
 probably came from a confusion between the parent instance (the {{{obj}}}
 argument) and the child instance (not accessible).

 Still, exactly as it makes sense overriding
 {{{ModelInline.has_change_permission}}}, we may need to have some specific
 logic to define whether an user can add inlines objects depending on the
 parent object.

 I suggest we add the {{{obj}}} argument to
 {{{ModelInline.has_add_permission}}}, and make it more clear (both in the
 doc and as comments in the code) that {{{obj}}} refers to the parent
 instance, and not the inline instance.

 It would be awesome if those methods also took the inline instance as a
 parameter (eg. {{{def has_change_permission(self, request, obj=None,
 childObj=None):}}} to keep it backwards compatible ) but that would
 probably be for another ticket.

 Thanks !

 Olivier

--
Ticket URL: <https://code.djangoproject.com/ticket/27991>
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/056.505d782a7680473b6ee1a44c3ff9cd22%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to