Expand the document app API to include document version and document pages

This commit is contained in:
Roberto Rosario
2014-07-06 12:59:43 -04:00
parent f889ade7cd
commit 95ce732f20
3 changed files with 36 additions and 7 deletions

View File

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

View File

@@ -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>'},
]

View File

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