Convert the success header generation to a mixin

Signed-off-by: Roberto Rosario <Roberto.Rosario.Gonzalez@mayan-edms.com>
This commit is contained in:
Roberto Rosario
2019-02-19 03:25:43 -04:00
parent 495cd18e34
commit 7eaa096ad7
2 changed files with 23 additions and 8 deletions

View File

@@ -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 {}

View File

@@ -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,)