From 2e4cd173c6951ab1b3be63d2958cb3716668c705 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Sun, 21 Sep 2014 15:13:56 -0400 Subject: [PATCH] Add document type detail API endpoint --- mayan/apps/documents/api_views.py | 27 ++++++++++++++++++++++++--- mayan/apps/documents/serializers.py | 7 ++++++- mayan/apps/documents/urls.py | 5 +++-- 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/mayan/apps/documents/api_views.py b/mayan/apps/documents/api_views.py index 0ecaccd767..8e982fba4d 100644 --- a/mayan/apps/documents/api_views.py +++ b/mayan/apps/documents/api_views.py @@ -15,14 +15,18 @@ from rest_api.filters import MayanObjectPermissionsFilter from rest_api.permissions import MayanPermission from .conf.settings import DISPLAY_SIZE, ZOOM_MAX_LEVEL, ZOOM_MIN_LEVEL -from .models import Document, DocumentPage, DocumentVersion +from .models import Document, DocumentPage, DocumentType, DocumentVersion from .permissions import (PERMISSION_DOCUMENT_CREATE, PERMISSION_DOCUMENT_DELETE, PERMISSION_DOCUMENT_EDIT, PERMISSION_DOCUMENT_NEW_VERSION, PERMISSION_DOCUMENT_PROPERTIES_EDIT, - PERMISSION_DOCUMENT_VIEW) + PERMISSION_DOCUMENT_VIEW, + PERMISSION_DOCUMENT_TYPE_DELETE, + PERMISSION_DOCUMENT_TYPE_EDIT, + PERMISSION_DOCUMENT_TYPE_VIEW) from .serializers import (DocumentImageSerializer, DocumentPageSerializer, - DocumentSerializer, DocumentVersionSerializer) + DocumentSerializer, DocumentTypeSerializer, + DocumentVersionSerializer) class APIDocumentListView(generics.ListCreateAPIView): @@ -181,3 +185,20 @@ class APIDocumentPageView(generics.RetrieveUpdateAPIView): 'PATCH': [PERMISSION_DOCUMENT_EDIT] } mayan_permission_attribute_check = 'document' + + +class APIDocumentTypeView(generics.RetrieveUpdateDestroyAPIView): + """ + Returns the selected document type details. + """ + + serializer_class = DocumentTypeSerializer + queryset = DocumentType.objects.all() + + permission_classes = (MayanPermission,) + mayan_object_permissions = { + 'GET': [PERMISSION_DOCUMENT_TYPE_VIEW], + 'PUT': [PERMISSION_DOCUMENT_TYPE_EDIT], + 'PATCH': [PERMISSION_DOCUMENT_TYPE_EDIT], + 'DELETE': [PERMISSION_DOCUMENT_TYPE_DELETE] + } diff --git a/mayan/apps/documents/serializers.py b/mayan/apps/documents/serializers.py index a83b43b35a..fba2ee3c8a 100644 --- a/mayan/apps/documents/serializers.py +++ b/mayan/apps/documents/serializers.py @@ -2,7 +2,12 @@ from __future__ import absolute_import from rest_framework import serializers -from .models import Document, DocumentVersion, DocumentPage +from .models import Document, DocumentVersion, DocumentPage, DocumentType + + +class DocumentTypeSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = DocumentType class DocumentPageSerializer(serializers.HyperlinkedModelSerializer): diff --git a/mayan/apps/documents/urls.py b/mayan/apps/documents/urls.py index 9d36cc6cc4..21cd65e787 100644 --- a/mayan/apps/documents/urls.py +++ b/mayan/apps/documents/urls.py @@ -3,8 +3,8 @@ from __future__ import absolute_import from django.conf.urls import patterns, url from .api_views import (APIDocumentView, APIDocumentImageView, APIDocumentListView, - APIDocumentPageView, APIDocumentVersionCreateView, - APIDocumentVersionView) + APIDocumentPageView, APIDocumentTypeView, + APIDocumentVersionCreateView, APIDocumentVersionView) from .conf.settings import PRINT_SIZE, DISPLAY_SIZE urlpatterns = patterns('documents.views', @@ -76,4 +76,5 @@ api_urls = patterns('', url(r'^document_page/(?P[0-9]+)/$', APIDocumentPageView.as_view(), name='documentpage-detail'), url(r'^documents/(?P[0-9]+)/image/$', APIDocumentImageView.as_view(), name='document-image'), url(r'^documents/(?P[0-9]+)/new_version/$', APIDocumentVersionCreateView.as_view(), name='document-new-version'), + url(r'^documenttypes/(?P[0-9]+)/$', APIDocumentTypeView.as_view(), name='documenttype-detail'), )