#34055: InlineModelAdmin and permissions on the instances shown in the in-line
-------------------------------------+-------------------------------------
               Reporter:  Jonas      |          Owner:  nobody
  Vacek                              |
                   Type:  New        |         Status:  new
  feature                            |
              Component:             |        Version:  dev
  contrib.admin                      |       Keywords:  Admin, Inline,
               Severity:  Normal     |  Permissions
           Triage Stage:             |      Has patch:  0
  Unreviewed                         |
    Needs documentation:  0          |    Needs tests:  0
Patch needs improvement:  0          |  Easy pickings:  0
                  UI/UX:  0          |
-------------------------------------+-------------------------------------
 
https://docs.djangoproject.com/en/4.1/ref/contrib/admin/#django.contrib.admin.InlineModelAdmin.has_change_permission

 As documented above, the `has_{xyz}_permission()` functions are referring
 to the parent `obj`.

 As far as I can tell, there's no method currently available change the
 permissions on each instance inside of an inline.

 to help visualise what I'm aiming for, here is a screenshot with an
 implemented work-around that overrrides the default form of the in-line

 [[Image(https://i.imgur.com/Aatfblj.png)]]
 The work-around is not perfect, as it just changes the `<input>`
 attributes on the form, and changes will not be rejected in any way, but
 it gives the visual idea. The above is achieved with the following

 {{{
 class MyInlineForm(ModelForm):
     def __init__(self, *args, **kwargs):
         super(MyInlineForm, self).__init__(*args, **kwargs)
         instance = getattr(self, "instance", None)
         if (
             instance
             and instance.id
             and (instance.my_permission_function())
         ):
             for field in self.fields:
                 self.fields[field].widget.attrs["readonly"] = True
 }}}

-- 
Ticket URL: <https://code.djangoproject.com/ticket/34055>
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/010701837e933eea-f2ce120d-8244-4a50-8039-41075b1dc0de-000000%40eu-central-1.amazonses.com.

Reply via email to