Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
django-rest-framework
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
django-rest-framework
Commits
0e97074f
Commit
0e97074f
authored
Feb 11, 2012
by
Tom Christie
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #160 from mammique/django_perms
Django perms
parents
c5691cca
963d2ecc
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
42 additions
and
0 deletions
+42
-0
djangorestframework/permissions.py
+42
-0
No files found.
djangorestframework/permissions.py
View file @
0e97074f
...
...
@@ -89,6 +89,48 @@ class IsUserOrIsAnonReadOnly(BasePermission):
raise
_403_FORBIDDEN_RESPONSE
class
DjangoModelPermisson
(
BasePermission
):
"""
The request is authenticated against the Django user's permissions on the
`Resource`'s `Model`, if the resource is a `ModelResource`.
"""
def
check_permission
(
self
,
user
):
# GET-style methods are always allowed.
if
self
.
view
.
request
.
method
in
(
'GET'
,
'OPTIONS'
,
'HEAD'
,):
return
klass
=
self
.
view
.
resource
.
model
# If it doesn't look like a model, we can't check permissions.
if
not
klass
or
not
getattr
(
klass
,
'_meta'
,
None
):
return
# User must be logged in to check permissions.
if
not
hasattr
(
self
.
view
.
request
,
'user'
)
or
not
self
.
view
.
request
.
user
.
is_authenticated
():
raise
_403_FORBIDDEN_RESPONSE
permission_map
=
{
'POST'
:
[
'
%
s.add_
%
s'
],
'PUT'
:
[
'
%
s.change_
%
s'
],
'DELETE'
:
[
'
%
s.delete_
%
s'
],
'PATCH'
:
[
'
%
s.add_
%
s'
,
'
%
s.change_
%
s'
,
'
%
s.delete_
%
s'
],
}
permission_codes
=
[]
# If we don't recognize the HTTP method, we don't know what
# permissions to check. Deny.
if
self
.
view
.
request
.
method
not
in
permission_map
:
raise
_403_FORBIDDEN_RESPONSE
for
perm
in
permission_map
[
self
.
view
.
request
.
method
]:
permission_codes
.
append
(
perm
%
(
klass
.
_meta
.
app_label
,
klass
.
_meta
.
module_name
))
if
not
self
.
view
.
request
.
user
.
has_perms
(
permission_codes
):
raise
_403_FORBIDDEN_RESPONSE
class
BaseThrottle
(
BasePermission
):
"""
Rate throttling of requests.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment