#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.