Add API endpoint to return the list of recent document for the current user

This commit is contained in:
Roberto Rosario
2014-12-13 05:32:27 -04:00
parent 384ebde6ab
commit 790c5745f8
3 changed files with 28 additions and 4 deletions

View File

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

View File

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

View File

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