Add API endpoint to return the list of recent document for the current user
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
# TODO: Improve API methods docstrings
|
||||
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.shortcuts import get_object_or_404
|
||||
|
||||
@@ -16,7 +18,8 @@ from permissions.models import Permission
|
||||
from rest_api.filters import MayanObjectPermissionsFilter
|
||||
from rest_api.permissions import MayanPermission
|
||||
|
||||
from .models import Document, DocumentPage, DocumentType, DocumentVersion
|
||||
from .models import (Document, DocumentPage, DocumentType, DocumentVersion,
|
||||
RecentDocument)
|
||||
from .permissions import (PERMISSION_DOCUMENT_CREATE,
|
||||
PERMISSION_DOCUMENT_DELETE, PERMISSION_DOCUMENT_EDIT,
|
||||
PERMISSION_DOCUMENT_NEW_VERSION,
|
||||
@@ -28,7 +31,8 @@ from .permissions import (PERMISSION_DOCUMENT_CREATE,
|
||||
PERMISSION_DOCUMENT_TYPE_VIEW)
|
||||
from .serializers import (DocumentImageSerializer, DocumentPageSerializer,
|
||||
DocumentSerializer, DocumentTypeSerializer,
|
||||
DocumentVersionSerializer, NewDocumentSerializer)
|
||||
DocumentVersionSerializer, NewDocumentSerializer,
|
||||
RecentDocumentSerializer)
|
||||
from .settings import DISPLAY_SIZE, ZOOM_MAX_LEVEL, ZOOM_MIN_LEVEL
|
||||
from .tasks import task_get_document_image, task_new_document
|
||||
|
||||
@@ -311,3 +315,14 @@ class APIDocumentTypeDocumentListView(generics.ListAPIView):
|
||||
AccessEntry.objects.check_access(PERMISSION_DOCUMENT_TYPE_VIEW, self.request.user, document_type)
|
||||
|
||||
return document_type.documents.all()
|
||||
|
||||
|
||||
class APIRecentDocumentListView(generics.ListAPIView):
|
||||
serializer_class = RecentDocumentSerializer
|
||||
|
||||
def get_queryset(self):
|
||||
return RecentDocument.objects.filter(user=self.request.user)
|
||||
|
||||
def get(self, *args, **kwargs):
|
||||
"""Return a list of the recent documents for the current user."""
|
||||
return super(APIRecentDocumentListView, self).get(*args, **kwargs)
|
||||
|
||||
@@ -3,7 +3,8 @@ from __future__ import absolute_import
|
||||
from rest_framework import serializers
|
||||
|
||||
from .literals import LANGUAGE_CHOICES
|
||||
from .models import Document, DocumentVersion, DocumentPage, DocumentType
|
||||
from .models import (Document, DocumentVersion, DocumentPage, DocumentType,
|
||||
RecentDocument)
|
||||
|
||||
|
||||
class DocumentPageSerializer(serializers.HyperlinkedModelSerializer):
|
||||
@@ -54,3 +55,9 @@ class NewDocumentSerializer(serializers.Serializer):
|
||||
file = serializers.FileField()
|
||||
label = serializers.CharField(required=False)
|
||||
language = serializers.ChoiceField(choices=LANGUAGE_CHOICES, blank_display_value=None, required=False)
|
||||
|
||||
|
||||
class RecentDocumentSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
fields = ('document', 'datetime_accessed')
|
||||
model = RecentDocument
|
||||
|
||||
@@ -5,7 +5,8 @@ from django.conf.urls import patterns, url
|
||||
from .api_views import (APIDocumentView, APIDocumentImageView, APIDocumentListView,
|
||||
APIDocumentPageView, APIDocumentTypeDocumentListView,
|
||||
APIDocumentTypeListView, APIDocumentTypeView,
|
||||
APIDocumentVersionCreateView, APIDocumentVersionView)
|
||||
APIDocumentVersionCreateView, APIDocumentVersionView,
|
||||
APIRecentDocumentListView)
|
||||
from .settings import PRINT_SIZE, DISPLAY_SIZE
|
||||
from .views import DocumentListView
|
||||
|
||||
@@ -73,6 +74,7 @@ urlpatterns = patterns('documents.views',
|
||||
|
||||
api_urls = patterns('',
|
||||
url(r'^documents/$', APIDocumentListView.as_view(), name='document-list'),
|
||||
url(r'^documents/recent/$', APIRecentDocumentListView.as_view(), name='document-recent-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'),
|
||||
|
||||
Reference in New Issue
Block a user