diff --git a/mayan/apps/rest_api/mixins.py b/mayan/apps/rest_api/mixins.py index 51e7fb2c3c..83d6f7022b 100644 --- a/mayan/apps/rest_api/mixins.py +++ b/mayan/apps/rest_api/mixins.py @@ -2,6 +2,8 @@ from __future__ import absolute_import, unicode_literals from django.core.exceptions import ImproperlyConfigured +from rest_framework.settings import api_settings + from mayan.apps.acls.models import AccessControlList @@ -82,3 +84,11 @@ class ExternalObjectListSerializerMixin(object): ) return queryset + + +class SuccessHeadersMixin(object): + def get_success_headers(self, data): + try: + return {'Location': str(data[api_settings.URL_FIELD_NAME])} + except (TypeError, KeyError): + return {} diff --git a/mayan/apps/rest_api/viewsets.py b/mayan/apps/rest_api/viewsets.py index 0e0c4205b7..a442e914af 100644 --- a/mayan/apps/rest_api/viewsets.py +++ b/mayan/apps/rest_api/viewsets.py @@ -4,20 +4,25 @@ from rest_framework import viewsets from rest_framework.settings import api_settings from .filters import MayanViewSetObjectPermissionsFilter +from .mixins import SuccessHeadersMixin from .permissions import MayanViewSetPermission -class MayanAPIGenericViewSet(viewsets.GenericViewSet): +class MayanAPIGenericViewSet(SuccessHeadersMixin, viewsets.GenericViewSet): filter_backends = (MayanViewSetObjectPermissionsFilter,) permission_classes = (MayanViewSetPermission,) - def get_success_headers(self, data): - try: - return {'Location': str(data[api_settings.URL_FIELD_NAME])} - except (TypeError, KeyError): - return {} - -class MayanAPIModelViewSet(viewsets.ModelViewSet): +class MayanAPIModelViewSet(SuccessHeadersMixin, viewsets.ModelViewSet): + filter_backends = (MayanViewSetObjectPermissionsFilter,) + permission_classes = (MayanViewSetPermission,) + + +class MayanAPIReadOnlyModelViewSet(SuccessHeadersMixin, viewsets.ReadOnlyModelViewSet): + filter_backends = (MayanViewSetObjectPermissionsFilter,) + permission_classes = (MayanViewSetPermission,) + + +class MayanAPIViewSet(SuccessHeadersMixin, viewsets.GenericViewSet): filter_backends = (MayanViewSetObjectPermissionsFilter,) permission_classes = (MayanViewSetPermission,)