Expand the document app API to include document version and document pages
This commit is contained in:
@@ -6,7 +6,6 @@ from django.core.exceptions import PermissionDenied
|
||||
from django.shortcuts import get_object_or_404
|
||||
|
||||
from rest_framework import generics
|
||||
from rest_framework.generics import RetrieveAPIView
|
||||
from rest_framework.response import Response
|
||||
|
||||
from acls.models import AccessEntry
|
||||
@@ -16,21 +15,34 @@ from converter.literals import (DEFAULT_ZOOM_LEVEL, DEFAULT_ROTATION,
|
||||
from permissions.models import Permission
|
||||
|
||||
from .conf.settings import DISPLAY_SIZE, ZOOM_MAX_LEVEL, ZOOM_MIN_LEVEL
|
||||
from .models import Document
|
||||
from .models import Document, DocumentVersion, DocumentPage
|
||||
from .permissions import PERMISSION_DOCUMENT_VIEW
|
||||
from .resources import ResourceDocument
|
||||
from .resources import ResourceDocument, ResourceDocumentVersion, ResourceDocumentPage
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# API Views
|
||||
|
||||
|
||||
class APIDocumentView(RetrieveAPIView):
|
||||
class APIDocumentPageView(generics.RetrieveAPIView):
|
||||
allowed_methods = ['GET']
|
||||
serializer_class = ResourceDocumentPage
|
||||
queryset = DocumentPage.objects.all()
|
||||
|
||||
|
||||
class APIDocumentView(generics.RetrieveAPIView):
|
||||
allowed_methods = ['GET']
|
||||
serializer_class = ResourceDocument
|
||||
queryset = Document.objects.all()
|
||||
|
||||
|
||||
class APIDocumentVersionView(generics.RetrieveAPIView):
|
||||
allowed_methods = ['GET']
|
||||
serializer_class = DocumentVersion
|
||||
queryset = DocumentVersion.objects.all()
|
||||
|
||||
|
||||
|
||||
class APIDocumentImageView(generics.GenericAPIView):
|
||||
def get(self, request, pk):
|
||||
document = get_object_or_404(Document, pk=pk)
|
||||
|
||||
@@ -3,7 +3,7 @@ from __future__ import absolute_import
|
||||
from django.conf.urls import url
|
||||
|
||||
from .cleanup import cleanup
|
||||
from .api import APIDocumentView, APIDocumentImageView
|
||||
from .api import APIDocumentView, APIDocumentVersionView, APIDocumentImageView, APIDocumentPageView
|
||||
|
||||
bootstrap_models = [
|
||||
{
|
||||
@@ -18,5 +18,7 @@ cleanup_functions = [cleanup]
|
||||
|
||||
version_0_api_services = [
|
||||
{'urlpattern': url(r'^document/(?P<pk>[0-9]+)/$', APIDocumentView.as_view(), name='document-detail'), 'description': 'Show document data', 'url': 'document/<document ID>'},
|
||||
{'urlpattern': url(r'^document_version/(?P<pk>[0-9]+)/$', APIDocumentVersionView.as_view(), name='documentversion-detail'), 'description': '', 'url': 'document_version/<document_version ID>'},
|
||||
{'urlpattern': url(r'^document_page/(?P<pk>[0-9]+)/$', APIDocumentPageView.as_view(), name='documentpage-detail'), 'description': '', 'url': 'document_page/<document page_ID>'},
|
||||
{'urlpattern': url(r'^document/(?P<pk>[0-9]+)/image/$', APIDocumentImageView.as_view(), name='document-image'), 'description': 'Return a base64 image of the document', 'url': 'document/<document_id>/image/?page=<page number>&zoom=<zoom percent>&rotate=<rotation degrees>'},
|
||||
]
|
||||
|
||||
@@ -4,10 +4,25 @@ from django.core.urlresolvers import reverse
|
||||
|
||||
from rest_framework import serializers
|
||||
|
||||
from .models import Document
|
||||
from .models import Document, DocumentVersion, DocumentPage
|
||||
|
||||
|
||||
class ResourceDocumentPage(serializers.HyperlinkedModelSerializer):
|
||||
class Meta:
|
||||
model = DocumentPage
|
||||
fields = ('url', 'content', 'page_label', 'page_number')
|
||||
|
||||
|
||||
class ResourceDocumentVersion(serializers.HyperlinkedModelSerializer):
|
||||
pages = ResourceDocumentPage(many=True, read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = DocumentVersion
|
||||
fields = ('document', 'major', 'minor', 'micro', 'release_level', 'serial', 'timestamp', 'comment', 'file', 'mimetype', 'encoding', 'filename', 'checksum', 'pages')
|
||||
|
||||
|
||||
class ResourceDocument(serializers.HyperlinkedModelSerializer):
|
||||
versions = ResourceDocumentVersion(many=True, read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = Document
|
||||
fields = ('url', 'document_type', 'uuid', 'date_added', 'description')
|
||||
|
||||
Reference in New Issue
Block a user