Update the documents app to use the new way of registering API endpoints
This commit is contained in:
@@ -14,6 +14,7 @@ from navigation.api import (register_links, register_top_menu,
|
||||
register_model_list_columns, register_multi_item_links,
|
||||
register_sidebar_template)
|
||||
from project_setup.api import register_setup
|
||||
from rest_api.classes import APIEndPoint
|
||||
from statistics.classes import StatisticNamespace
|
||||
|
||||
from .conf import settings as document_settings
|
||||
@@ -46,6 +47,7 @@ from .permissions import (
|
||||
PERMISSION_DOCUMENT_TRANSFORM, PERMISSION_DOCUMENT_EDIT,
|
||||
PERMISSION_DOCUMENT_VERSION_REVERT, PERMISSION_DOCUMENT_NEW_VERSION)
|
||||
from .statistics import DocumentStatistics, DocumentUsageStatistics
|
||||
from .urls import api_urls
|
||||
from .widgets import document_thumbnail
|
||||
|
||||
# History setup
|
||||
@@ -151,3 +153,8 @@ document_search.add_related_field('comments', 'Comment', 'comment', 'object_pk',
|
||||
namespace = StatisticNamespace(name='documents', label=_(u'Documents'))
|
||||
namespace.add_statistic(DocumentStatistics(name='document_stats', label=_(u'Document tendencies')))
|
||||
namespace.add_statistic(DocumentUsageStatistics(name='document_usage', label=_(u'Document usage')))
|
||||
|
||||
|
||||
endpoint = APIEndPoint('documents')
|
||||
endpoint.register_urls(api_urls)
|
||||
endpoint.add_endpoint('document-list')
|
||||
|
||||
@@ -17,32 +17,57 @@ from permissions.models import Permission
|
||||
from .conf.settings import DISPLAY_SIZE, ZOOM_MAX_LEVEL, ZOOM_MIN_LEVEL
|
||||
from .models import Document, DocumentVersion, DocumentPage
|
||||
from .permissions import PERMISSION_DOCUMENT_VIEW
|
||||
from .resources import ResourceDocument, ResourceDocumentVersion, ResourceDocumentPage
|
||||
from .resources import DocumentSerializer, DocumentVersionSerializer, DocumentPageSerializer
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# API Views
|
||||
|
||||
|
||||
class APIDocumentListView(generics.ListAPIView):
|
||||
"""
|
||||
Returns a list of all the documents.
|
||||
"""
|
||||
|
||||
serializer_class = DocumentSerializer
|
||||
queryset = Document.objects.all()
|
||||
|
||||
|
||||
class APIDocumentPageView(generics.RetrieveAPIView):
|
||||
"""
|
||||
Returns the selected document page details.
|
||||
"""
|
||||
|
||||
allowed_methods = ['GET']
|
||||
serializer_class = ResourceDocumentPage
|
||||
serializer_class = DocumentPageSerializer
|
||||
queryset = DocumentPage.objects.all()
|
||||
|
||||
|
||||
class APIDocumentView(generics.RetrieveAPIView):
|
||||
"""
|
||||
Returns the selected document details.
|
||||
"""
|
||||
|
||||
allowed_methods = ['GET']
|
||||
serializer_class = ResourceDocument
|
||||
serializer_class = DocumentSerializer
|
||||
queryset = Document.objects.all()
|
||||
|
||||
|
||||
class APIDocumentVersionView(generics.RetrieveAPIView):
|
||||
"""
|
||||
Returns the selected document version details.
|
||||
"""
|
||||
|
||||
allowed_methods = ['GET']
|
||||
serializer_class = ResourceDocumentVersion
|
||||
serializer_class = DocumentVersionSerializer
|
||||
queryset = DocumentVersion.objects.all()
|
||||
|
||||
|
||||
class APIDocumentImageView(generics.GenericAPIView):
|
||||
"""
|
||||
Returns an image representation of the selected document.
|
||||
"""
|
||||
|
||||
def get(self, request, pk):
|
||||
document = get_object_or_404(Document, pk=pk)
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@ from __future__ import absolute_import
|
||||
from django.conf.urls import url
|
||||
|
||||
from .cleanup import cleanup
|
||||
from .api import APIDocumentView, APIDocumentVersionView, APIDocumentImageView, APIDocumentPageView
|
||||
|
||||
bootstrap_models = [
|
||||
{
|
||||
@@ -16,9 +15,3 @@ bootstrap_models = [
|
||||
]
|
||||
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>'},
|
||||
]
|
||||
|
||||
@@ -7,20 +7,20 @@ from rest_framework import serializers
|
||||
from .models import Document, DocumentVersion, DocumentPage
|
||||
|
||||
|
||||
class ResourceDocumentPage(serializers.HyperlinkedModelSerializer):
|
||||
class DocumentPageSerializer(serializers.HyperlinkedModelSerializer):
|
||||
class Meta:
|
||||
model = DocumentPage
|
||||
|
||||
|
||||
class ResourceDocumentVersion(serializers.HyperlinkedModelSerializer):
|
||||
pages = ResourceDocumentPage(many=True, read_only=True)
|
||||
class DocumentVersionSerializer(serializers.HyperlinkedModelSerializer):
|
||||
pages = DocumentPageSerializer(many=True, read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = DocumentVersion
|
||||
|
||||
|
||||
class ResourceDocument(serializers.HyperlinkedModelSerializer):
|
||||
versions = ResourceDocumentVersion(many=True, read_only=True)
|
||||
class DocumentSerializer(serializers.HyperlinkedModelSerializer):
|
||||
versions = DocumentVersionSerializer(many=True, read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = Document
|
||||
|
||||
@@ -2,6 +2,7 @@ from __future__ import absolute_import
|
||||
|
||||
from django.conf.urls import patterns, url
|
||||
|
||||
from .api import APIDocumentView, APIDocumentListView, APIDocumentVersionView, APIDocumentImageView, APIDocumentPageView
|
||||
from .conf.settings import (PREVIEW_SIZE, PRINT_SIZE, DISPLAY_SIZE,
|
||||
MULTIPAGE_PREVIEW_SIZE)
|
||||
|
||||
@@ -67,5 +68,12 @@ urlpatterns = patterns('documents.views',
|
||||
url(r'^type/filename/(?P<document_type_filename_id>\d+)/edit/$', 'document_type_filename_edit', (), 'document_type_filename_edit'),
|
||||
url(r'^type/filename/(?P<document_type_filename_id>\d+)/delete/$', 'document_type_filename_delete', (), 'document_type_filename_delete'),
|
||||
url(r'^type/(?P<document_type_id>\d+)/filename/create/$', 'document_type_filename_create', (), 'document_type_filename_create'),
|
||||
|
||||
)
|
||||
|
||||
api_urls = patterns('',
|
||||
url(r'^documents/$', APIDocumentListView.as_view(), name='document-list'),
|
||||
url(r'^documents/(?P<pk>[0-9]+)/$', APIDocumentView.as_view(), name='document-detail'),
|
||||
url(r'^document_version/(?P<pk>[0-9]+)/$', APIDocumentVersionView.as_view(), name='documentversion-detail'),
|
||||
url(r'^document_page/(?P<pk>[0-9]+)/$', APIDocumentPageView.as_view(), name='documentpage-detail'),
|
||||
url(r'^documents/(?P<pk>[0-9]+)/image/$', APIDocumentImageView.as_view(), name='document-image'),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user