#29723: Backwards-incompatible change of has_add_permission in 2.1
--------------------------------------------+------------------------
               Reporter:  Aymeric Augustin  |          Owner:  nobody
                   Type:  Bug               |         Status:  new
              Component:  contrib.admin     |        Version:  2.1
               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                 |
--------------------------------------------+------------------------
 The release notes suggest that InlineModelAdmin.has_add_permission()
 methods that don’t accept obj as the second positional argument will be
 supported until Django 3.0:

 > Support for InlineModelAdmin.has_add_permission() methods that don’t
 accept obj as the second positional argument will be removed in Django
 3.0.

 This doesn't appear to be true in my experience.

 I have this method defined on an InlineModelAdmin:
 {{{
     def has_add_permission(self, request):
         return False
 }}}

 I'm getting this traceback with Django 2.1:

 {{{
 File "/home/ubuntu/.pyenv/versions/3.6.2/envs/cupido/lib/python3.6/site-
 packages/django/core/handlers/exception.py" in inner
   34.             response = get_response(request)

 File "/home/ubuntu/.pyenv/versions/3.6.2/envs/cupido/lib/python3.6/site-
 packages/django/core/handlers/base.py" in _get_response
   126.                 response = self.process_exception_by_middleware(e,
 request)

 File "/home/ubuntu/.pyenv/versions/3.6.2/envs/cupido/lib/python3.6/site-
 packages/django/core/handlers/base.py" in _get_response
   124.                 response = wrapped_callback(request,
 *callback_args, **callback_kwargs)

 File "/home/ubuntu/.pyenv/versions/3.6.2/envs/cupido/lib/python3.6/site-
 packages/django/contrib/admin/options.py" in wrapper
   607.                 return self.admin_site.admin_view(view)(*args,
 **kwargs)

 File "/home/ubuntu/.pyenv/versions/3.6.2/envs/cupido/lib/python3.6/site-
 packages/django/utils/decorators.py" in _wrapped_view
   142.                     response = view_func(request, *args, **kwargs)

 File "/home/ubuntu/.pyenv/versions/3.6.2/envs/cupido/lib/python3.6/site-
 packages/django/views/decorators/cache.py" in _wrapped_view_func
   44.         response = view_func(request, *args, **kwargs)

 File "/home/ubuntu/.pyenv/versions/3.6.2/envs/cupido/lib/python3.6/site-
 packages/django/contrib/admin/sites.py" in inner
   223.             return view(request, *args, **kwargs)

 File "/home/ubuntu/.pyenv/versions/3.6.2/envs/cupido/lib/python3.6/site-
 packages/django/contrib/admin/options.py" in add_view
   1647.         return self.changeform_view(request, None, form_url,
 extra_context)

 File "/home/ubuntu/.pyenv/versions/3.6.2/envs/cupido/lib/python3.6/site-
 packages/django/utils/decorators.py" in _wrapper
   45.         return bound_method(*args, **kwargs)

 File "/home/ubuntu/.pyenv/versions/3.6.2/envs/cupido/lib/python3.6/site-
 packages/django/utils/decorators.py" in _wrapped_view
   142.                     response = view_func(request, *args, **kwargs)

 File "/home/ubuntu/.pyenv/versions/3.6.2/envs/cupido/lib/python3.6/site-
 packages/django/contrib/admin/options.py" in changeform_view
   1536.             return self._changeform_view(request, object_id,
 form_url, extra_context)

 File "/home/ubuntu/.pyenv/versions/3.6.2/envs/cupido/lib/python3.6/site-
 packages/django/contrib/admin/options.py" in _changeform_view
   1590.                 formsets, inline_instances =
 self._create_formsets(request, form.instance, change=False)

 File "/home/ubuntu/.pyenv/versions/3.6.2/envs/cupido/lib/python3.6/site-
 packages/django/contrib/admin/options.py" in _create_formsets
   1945.         for FormSet, inline in
 self.get_formsets_with_inlines(*get_formsets_args):

 File "/home/ubuntu/.pyenv/versions/3.6.2/envs/cupido/lib/python3.6/site-
 packages/django/contrib/admin/options.py" in get_formsets_with_inlines
   795.             yield inline.get_formset(request, obj), inline

 File "/home/ubuntu/.pyenv/versions/3.6.2/envs/cupido/lib/python3.6/site-
 packages/django/contrib/admin/options.py" in get_formset
   2055.         can_add = self.has_add_permission(request, obj) if request
 else True

 Exception Type: TypeError at /admin/cupido/notification/add/
 Exception Value: has_add_permission() takes 2 positional arguments but 3
 were given
 }}}

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

Reply via email to