@@ -227,6 +227,18 @@ class ObjectPermissionListView(generics.ListAPIView):
227
227
object_permissions_list_view = ObjectPermissionListView .as_view ()
228
228
229
229
230
+ class GetQuerysetObjectPermissionInstanceView (generics .RetrieveUpdateDestroyAPIView ):
231
+ serializer_class = BasicPermSerializer
232
+ authentication_classes = [authentication .BasicAuthentication ]
233
+ permission_classes = [ViewObjectPermissions ]
234
+
235
+ def get_queryset (self ):
236
+ return BasicPermModel .objects .all ()
237
+
238
+
239
+ get_queryset_object_permissions_view = GetQuerysetObjectPermissionInstanceView .as_view ()
240
+
241
+
230
242
@unittest .skipUnless (guardian , 'django-guardian not installed' )
231
243
class ObjectPermissionsIntegrationTests (TestCase ):
232
244
"""
@@ -326,6 +338,15 @@ def test_cannot_read_permissions(self):
326
338
response = object_permissions_view (request , pk = '1' )
327
339
self .assertEqual (response .status_code , status .HTTP_404_NOT_FOUND )
328
340
341
+ def test_can_read_get_queryset_permissions (self ):
342
+ """
343
+ same as ``test_can_read_permissions`` but with a view
344
+ that rely on ``.get_queryset()`` instead of ``.queryset``.
345
+ """
346
+ request = factory .get ('/1' , HTTP_AUTHORIZATION = self .credentials ['readonly' ])
347
+ response = get_queryset_object_permissions_view (request , pk = '1' )
348
+ self .assertEqual (response .status_code , status .HTTP_200_OK )
349
+
329
350
# Read list
330
351
def test_can_read_list_permissions (self ):
331
352
request = factory .get ('/' , HTTP_AUTHORIZATION = self .credentials ['readonly' ])
0 commit comments