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
6f66798a
Commit
6f66798a
authored
Apr 22, 2015
by
Nicolas Delaby
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Prevent empty `queryset`s to raises AssertionError.
parent
fe7cd847
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
14 additions
and
1 deletions
+14
-1
rest_framework/permissions.py
+1
-1
tests/test_permissions.py
+13
-0
No files found.
rest_framework/permissions.py
View file @
6f66798a
...
...
@@ -120,7 +120,7 @@ class DjangoModelPermissions(BasePermission):
if
queryset
is
None
and
getattr
(
view
,
'_ignore_model_permissions'
,
False
):
return
True
assert
queryset
,
(
assert
queryset
is
not
None
,
(
'Cannot apply DjangoModelPermissions on a view that '
'does not have `.queryset` property.'
)
...
...
tests/test_permissions.py
View file @
6f66798a
...
...
@@ -41,9 +41,17 @@ class GetQuerySetListView(generics.ListCreateAPIView):
return
BasicModel
.
objects
.
all
()
class
EmptyListView
(
generics
.
ListCreateAPIView
):
queryset
=
BasicModel
.
objects
.
none
()
serializer_class
=
BasicSerializer
authentication_classes
=
[
authentication
.
BasicAuthentication
]
permission_classes
=
[
permissions
.
DjangoModelPermissions
]
root_view
=
RootView
.
as_view
()
instance_view
=
InstanceView
.
as_view
()
get_queryset_list_view
=
GetQuerySetListView
.
as_view
()
empty_list_view
=
EmptyListView
.
as_view
()
def
basic_auth_header
(
username
,
password
):
...
...
@@ -166,6 +174,11 @@ class ModelPermissionsIntegrationTests(TestCase):
self
.
assertIn
(
'actions'
,
response
.
data
)
self
.
assertEqual
(
list
(
response
.
data
[
'actions'
]
.
keys
()),
[
'PUT'
])
def
test_empty_view_does_not_assert
(
self
):
request
=
factory
.
get
(
'/1'
,
HTTP_AUTHORIZATION
=
self
.
permitted_credentials
)
response
=
empty_list_view
(
request
,
pk
=
1
)
self
.
assertEqual
(
response
.
status_code
,
status
.
HTTP_200_OK
)
class
BasicPermModel
(
models
.
Model
):
text
=
models
.
CharField
(
max_length
=
100
)
...
...
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