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
|
from __future__ import absolute_import
|
||||||
|
|
||||||
|
# TODO: Improve API methods docstrings
|
||||||
|
|
||||||
from django.core.exceptions import PermissionDenied
|
from django.core.exceptions import PermissionDenied
|
||||||
from django.shortcuts import get_object_or_404
|
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.filters import MayanObjectPermissionsFilter
|
||||||
from rest_api.permissions import MayanPermission
|
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,
|
from .permissions import (PERMISSION_DOCUMENT_CREATE,
|
||||||
PERMISSION_DOCUMENT_DELETE, PERMISSION_DOCUMENT_EDIT,
|
PERMISSION_DOCUMENT_DELETE, PERMISSION_DOCUMENT_EDIT,
|
||||||
PERMISSION_DOCUMENT_NEW_VERSION,
|
PERMISSION_DOCUMENT_NEW_VERSION,
|
||||||
@@ -28,7 +31,8 @@ from .permissions import (PERMISSION_DOCUMENT_CREATE,
|
|||||||
PERMISSION_DOCUMENT_TYPE_VIEW)
|
PERMISSION_DOCUMENT_TYPE_VIEW)
|
||||||
from .serializers import (DocumentImageSerializer, DocumentPageSerializer,
|
from .serializers import (DocumentImageSerializer, DocumentPageSerializer,
|
||||||
DocumentSerializer, DocumentTypeSerializer,
|
DocumentSerializer, DocumentTypeSerializer,
|
||||||
DocumentVersionSerializer, NewDocumentSerializer)
|
DocumentVersionSerializer, NewDocumentSerializer,
|
||||||
|
RecentDocumentSerializer)
|
||||||
from .settings import DISPLAY_SIZE, ZOOM_MAX_LEVEL, ZOOM_MIN_LEVEL
|
from .settings import DISPLAY_SIZE, ZOOM_MAX_LEVEL, ZOOM_MIN_LEVEL
|
||||||
from .tasks import task_get_document_image, task_new_document
|
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)
|
AccessEntry.objects.check_access(PERMISSION_DOCUMENT_TYPE_VIEW, self.request.user, document_type)
|
||||||
|
|
||||||
return document_type.documents.all()
|
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 rest_framework import serializers
|
||||||
|
|
||||||
from .literals import LANGUAGE_CHOICES
|
from .literals import LANGUAGE_CHOICES
|
||||||
from .models import Document, DocumentVersion, DocumentPage, DocumentType
|
from .models import (Document, DocumentVersion, DocumentPage, DocumentType,
|
||||||
|
RecentDocument)
|
||||||
|
|
||||||
|
|
||||||
class DocumentPageSerializer(serializers.HyperlinkedModelSerializer):
|
class DocumentPageSerializer(serializers.HyperlinkedModelSerializer):
|
||||||
@@ -54,3 +55,9 @@ class NewDocumentSerializer(serializers.Serializer):
|
|||||||
file = serializers.FileField()
|
file = serializers.FileField()
|
||||||
label = serializers.CharField(required=False)
|
label = serializers.CharField(required=False)
|
||||||
language = serializers.ChoiceField(choices=LANGUAGE_CHOICES, blank_display_value=None, 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,
|
from .api_views import (APIDocumentView, APIDocumentImageView, APIDocumentListView,
|
||||||
APIDocumentPageView, APIDocumentTypeDocumentListView,
|
APIDocumentPageView, APIDocumentTypeDocumentListView,
|
||||||
APIDocumentTypeListView, APIDocumentTypeView,
|
APIDocumentTypeListView, APIDocumentTypeView,
|
||||||
APIDocumentVersionCreateView, APIDocumentVersionView)
|
APIDocumentVersionCreateView, APIDocumentVersionView,
|
||||||
|
APIRecentDocumentListView)
|
||||||
from .settings import PRINT_SIZE, DISPLAY_SIZE
|
from .settings import PRINT_SIZE, DISPLAY_SIZE
|
||||||
from .views import DocumentListView
|
from .views import DocumentListView
|
||||||
|
|
||||||
@@ -73,6 +74,7 @@ urlpatterns = patterns('documents.views',
|
|||||||
|
|
||||||
api_urls = patterns('',
|
api_urls = patterns('',
|
||||||
url(r'^documents/$', APIDocumentListView.as_view(), name='document-list'),
|
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'^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_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'^document_page/(?P<pk>[0-9]+)/$', APIDocumentPageView.as_view(), name='documentpage-detail'),
|
||||||
|
|||||||
Reference in New Issue
Block a user