Even if those methods are undocumented it's no secret they are used in the
wild. Django exclusively use them in `contrib.admin`:
{{{
(django)simon@simon-laptop:~/workspace/django$ grep -E
"get_(add|change|delete)_permission" django/ -Rn --include="*.py"
django/db/models/options.py:416: def get_add_permission(self):
django/db/models/options.py:419: def get_change_permission(self):
django/db/models/options.py:422: def get_delete_permission(self):
django/contrib/admin/options.py:355: return
request.user.has_perm(opts.app_label + '.' + opts.get_add_permission())
django/contrib/admin/options.py:369: return
request.user.has_perm(opts.app_label + '.' + opts.get_change_permission())
django/contrib/admin/options.py:383: return
request.user.has_perm(opts.app_label + '.' + opts.get_delete_permission())
django/contrib/admin/options.py:1671: self.opts.app_label + '.'
+ self.opts.get_add_permission())
django/contrib/admin/options.py:1683: opts.app_label + '.' +
opts.get_change_permission())
django/contrib/admin/options.py:1693: self.opts.app_label + '.'
+ self.opts.get_delete_permission())
django/contrib/admin/util.py:122:
opts.get_delete_permission())
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/20642>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* has_patch: 0 => 1
Comment:
Added a patch that deprecates option permission methods and moves
`contrib.auth.management._get_permission_codename` to
`contrib.auth.get_permission_codename` and use it in `contrib.admin`.
Wondering if we should document `get_permission_codename`, it feels a bit
odd to deprecate those methods while specifying no alternatives in the
release notes.
I still pointed to it in the raised deprecation warning.
--
Ticket URL: <https://code.djangoproject.com/ticket/20642#comment:1>
* stage: Unreviewed => Ready for checkin
Comment:
+1 much needed cleanup.
Tested it on a project that uses permissions and
`ModelAdmin.has_x_permission` overrides extensively and didn't notice any
issue.
--
Ticket URL: <https://code.djangoproject.com/ticket/20642#comment:2>
Comment (by charettes):
Updated the RFC patch to use `super` in `InlineAdmin` instead of
duplicating permission codename creation.
--
Ticket URL: <https://code.djangoproject.com/ticket/20642#comment:3>
* status: new => closed
* resolution: => fixed
Comment:
In [changeset:"b91787910c9d5a036674d46a73d1b48ca33123a3"]:
{{{
#!CommitTicketReference repository=""
revision="b91787910c9d5a036674d46a73d1b48ca33123a3"
Fixed #20642 -- Deprecated `Option.get_(add|change|delete)_permission`.
Those methods were only used by `contrib.admin` internally and exclusively
related to `contrib.auth`. Since they were undocumented but used
in the wild the raised deprecation warning point to an also undocumented
alternative that lives in `contrib.auth`.
Also did some PEP8 and other cleanups in the affected modules.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/20642#comment:4>
Comment (by Simon Charette <charette.s@…>):
In [changeset:"e1dd24d2f6dd3464ab50593320a7eb2325d6c196"]:
{{{
#!CommitTicketReference repository=""
revision="e1dd24d2f6dd3464ab50593320a7eb2325d6c196"
Added missing deprecation note for model permission methods.
refs #20642.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/20642#comment:5>
Comment (by Simon Charette <charette.s@…>):
In [changeset:"e628753e7dd1611fb4cf770a78126e96a02ab1d7"]:
{{{
#!CommitTicketReference repository=""
revision="e628753e7dd1611fb4cf770a78126e96a02ab1d7"
[1.6.x] Added missing deprecation note for model permission methods.
refs #20642.
Backport of e1dd24d2f from master.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/20642#comment:6>
Comment (by Tim Graham <timograham@…>):
In [changeset:"a6a905c619e48bb3db4a5fbb09e5e03abb7ed0f6"]:
{{{
#!CommitTicketReference repository=""
revision="a6a905c619e48bb3db4a5fbb09e5e03abb7ed0f6"
Updated tests for deprecation of
Option.get_(add|change|delete)_permission.
refs #20642.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/20642#comment:7>
Comment (by Tim Graham <timograham@…>):
In [changeset:"3c51962cabc9537221b86c667aac5ffaa1469660"]:
{{{
#!CommitTicketReference repository=""
revision="3c51962cabc9537221b86c667aac5ffaa1469660"
[1.6.x] Updated tests for deprecation of
Option.get_(add|change|delete)_permission.
refs #20642.
Backport of a6a905c619 from master.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/20642#comment:8>