Refactor the REST API app
Remove the APIRoot view. Remove the Endpoint class. Remove the EndpointSerializer. Move API documentation generation from the root urls module to the app's urls module. Update the app API URL generation to be based on viewsets instead of an custom api_urls list. Remove MayanObjectPermissionsFilter and replace it with MayanViewSetObjectPermissionsFilter which allows mapping a required permission to a specific viewset action. Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
48
mayan/apps/rest_api/generics.py
Normal file
48
mayan/apps/rest_api/generics.py
Normal file
@@ -0,0 +1,48 @@
|
||||
from __future__ import absolute_import, unicode_literals
|
||||
|
||||
from rest_framework import generics
|
||||
|
||||
from mayan.apps.rest_api.filters import MayanObjectPermissionsFilter
|
||||
from mayan.apps.rest_api.permissions import MayanPermission
|
||||
|
||||
|
||||
class ListAPIView(generics.ListAPIView):
|
||||
"""
|
||||
requires:
|
||||
object_permission = {'GET': ...}
|
||||
"""
|
||||
filter_backends = (MayanObjectPermissionsFilter,)
|
||||
|
||||
|
||||
class ListCreateAPIView(generics.ListCreateAPIView):
|
||||
"""
|
||||
requires:
|
||||
object_permission = {'GET': ...}
|
||||
view_permission = {'POST': ...}
|
||||
"""
|
||||
filter_backends = (MayanObjectPermissionsFilter,)
|
||||
permission_classes = (MayanPermission,)
|
||||
|
||||
|
||||
class RetrieveDestroyAPIView(generics.RetrieveDestroyAPIView):
|
||||
"""
|
||||
requires:
|
||||
object_permission = {
|
||||
'DELETE': ...,
|
||||
'GET': ...,
|
||||
}
|
||||
"""
|
||||
filter_backends = (MayanObjectPermissionsFilter,)
|
||||
|
||||
|
||||
class RetrieveUpdateDestroyAPIView(generics.RetrieveUpdateDestroyAPIView):
|
||||
"""
|
||||
requires:
|
||||
object_permission = {
|
||||
'DELETE': ...,
|
||||
'GET': ...,
|
||||
'PATCH': ...,
|
||||
'PUT': ...
|
||||
}
|
||||
"""
|
||||
filter_backends = (MayanObjectPermissionsFilter,)
|
||||
Reference in New Issue
Block a user