Update API vies and serializers for the latest Django REST framework version. Replace DRF Swagger with DRF-YASG.
Signed-off-by: Michael Price <loneviking72@gmail.com>
This commit is contained in:
committed by
Roberto Rosario
parent
77a3c103d1
commit
4378b28777
@@ -58,13 +58,15 @@ class APIObjectACLListView(generics.ListCreateAPIView):
|
|||||||
"""
|
"""
|
||||||
Extra context provided to the serializer class.
|
Extra context provided to the serializer class.
|
||||||
"""
|
"""
|
||||||
|
context = super(APIObjectACLListView, self).get_serializer_context()
|
||||||
|
if self.kwargs:
|
||||||
|
context.update(
|
||||||
|
{
|
||||||
|
'content_object': self.get_content_object(),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
return {
|
return context
|
||||||
'content_object': self.get_content_object(),
|
|
||||||
'format': self.format_kwarg,
|
|
||||||
'request': self.request,
|
|
||||||
'view': self
|
|
||||||
}
|
|
||||||
|
|
||||||
def get_serializer_class(self):
|
def get_serializer_class(self):
|
||||||
if self.request.method == 'GET':
|
if self.request.method == 'GET':
|
||||||
@@ -173,12 +175,15 @@ class APIObjectACLPermissionListView(generics.ListCreateAPIView):
|
|||||||
return WritableAccessControlListPermissionSerializer
|
return WritableAccessControlListPermissionSerializer
|
||||||
|
|
||||||
def get_serializer_context(self):
|
def get_serializer_context(self):
|
||||||
return {
|
context = super(APIObjectACLPermissionListView, self).get_serializer_context()
|
||||||
'acl': self.get_acl(),
|
if self.kwargs:
|
||||||
'format': self.format_kwarg,
|
context.update(
|
||||||
'request': self.request,
|
{
|
||||||
'view': self
|
'acl': self.get_acl(),
|
||||||
}
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return context
|
||||||
|
|
||||||
def post(self, *args, **kwargs):
|
def post(self, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
@@ -242,9 +247,12 @@ class APIObjectACLPermissionView(generics.RetrieveDestroyAPIView):
|
|||||||
return self.get_acl().permissions.all()
|
return self.get_acl().permissions.all()
|
||||||
|
|
||||||
def get_serializer_context(self):
|
def get_serializer_context(self):
|
||||||
return {
|
context = super(APIObjectACLPermissionView, self).get_serializer_context()
|
||||||
'acl': self.get_acl(),
|
if self.kwargs:
|
||||||
'format': self.format_kwarg,
|
context.update(
|
||||||
'request': self.request,
|
{
|
||||||
'view': self
|
'acl': self.get_acl(),
|
||||||
}
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return context
|
||||||
|
|||||||
@@ -133,12 +133,15 @@ class APICabinetDocumentListView(generics.ListCreateAPIView):
|
|||||||
"""
|
"""
|
||||||
Extra context provided to the serializer class.
|
Extra context provided to the serializer class.
|
||||||
"""
|
"""
|
||||||
return {
|
context = super(APICabinetDocumentListView, self).get_serializer_context()
|
||||||
'cabinet': self.get_cabinet(),
|
if self.kwargs:
|
||||||
'format': self.format_kwarg,
|
context.update(
|
||||||
'request': self.request,
|
{
|
||||||
'view': self
|
'cabinet': self.get_cabinet(),
|
||||||
}
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return context
|
||||||
|
|
||||||
def get_cabinet(self):
|
def get_cabinet(self):
|
||||||
return get_object_or_404(Cabinet, pk=self.kwargs['pk'])
|
return get_object_or_404(Cabinet, pk=self.kwargs['pk'])
|
||||||
@@ -198,12 +201,15 @@ class APICabinetDocumentView(generics.RetrieveDestroyAPIView):
|
|||||||
"""
|
"""
|
||||||
Extra context provided to the serializer class.
|
Extra context provided to the serializer class.
|
||||||
"""
|
"""
|
||||||
return {
|
context = super(APICabinetDocumentView, self).get_serializer_context()
|
||||||
'cabinet': self.get_cabinet(),
|
if self.kwargs:
|
||||||
'format': self.format_kwarg,
|
context.update(
|
||||||
'request': self.request,
|
{
|
||||||
'view': self
|
'cabinet': self.get_cabinet(),
|
||||||
}
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return context
|
||||||
|
|
||||||
def perform_destroy(self, instance):
|
def perform_destroy(self, instance):
|
||||||
self.get_cabinet().documents.remove(instance)
|
self.get_cabinet().documents.remove(instance)
|
||||||
|
|||||||
@@ -31,9 +31,13 @@ class APICheckedoutDocumentListView(generics.ListCreateAPIView):
|
|||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
filtered_documents = AccessControlList.objects.filter_by_access(
|
filtered_documents = AccessControlList.objects.filter_by_access(
|
||||||
(permission_document_view,), self.request.user,
|
permission=permission_document_view, user=self.request.user,
|
||||||
queryset=DocumentCheckout.objects.checked_out_documents()
|
queryset=DocumentCheckout.objects.checked_out_documents()
|
||||||
)
|
)
|
||||||
|
filtered_documents = AccessControlList.objects.filter_by_access(
|
||||||
|
permission=permission_document_checkout_detail_view, user=self.request.user,
|
||||||
|
queryset=filtered_documents
|
||||||
|
)
|
||||||
|
|
||||||
return DocumentCheckout.objects.filter(
|
return DocumentCheckout.objects.filter(
|
||||||
document__pk__in=filtered_documents.values_list('pk', flat=True)
|
document__pk__in=filtered_documents.values_list('pk', flat=True)
|
||||||
|
|||||||
@@ -2,18 +2,16 @@ from __future__ import unicode_literals
|
|||||||
|
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
|
from documents.serializers import DocumentSerializer
|
||||||
|
|
||||||
from .models import DocumentCheckout
|
from .models import DocumentCheckout
|
||||||
|
|
||||||
|
|
||||||
class DocumentCheckoutSerializer(serializers.ModelSerializer):
|
class DocumentCheckoutSerializer(serializers.ModelSerializer):
|
||||||
def __init__(self, *args, **kwargs):
|
document = DocumentSerializer()
|
||||||
# Hide this import otherwise strange circular import error occur
|
|
||||||
from documents.serializers import DocumentSerializer
|
|
||||||
|
|
||||||
super(DocumentCheckoutSerializer, self).__init__(*args, **kwargs)
|
|
||||||
self.fields['document'] = DocumentSerializer()
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
fields = ('document',)
|
||||||
model = DocumentCheckout
|
model = DocumentCheckout
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -55,12 +55,15 @@ class APICommentListView(generics.ListCreateAPIView):
|
|||||||
"""
|
"""
|
||||||
Extra context provided to the serializer class.
|
Extra context provided to the serializer class.
|
||||||
"""
|
"""
|
||||||
return {
|
context = super(APICommentListView, self).get_serializer_context()
|
||||||
'document': self.get_document(),
|
if self.kwargs:
|
||||||
'format': self.format_kwarg,
|
context.update(
|
||||||
'request': self.request,
|
{
|
||||||
'view': self
|
'document': self.get_document(),
|
||||||
}
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return context
|
||||||
|
|
||||||
def post(self, *args, **kwargs):
|
def post(self, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
@@ -108,13 +111,3 @@ class APICommentView(generics.RetrieveDestroyAPIView):
|
|||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
return self.get_document().comments.all()
|
return self.get_document().comments.all()
|
||||||
|
|
||||||
def get_serializer_context(self):
|
|
||||||
"""
|
|
||||||
Extra context provided to the serializer class.
|
|
||||||
"""
|
|
||||||
return {
|
|
||||||
'format': self.format_kwarg,
|
|
||||||
'request': self.request,
|
|
||||||
'view': self
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -83,13 +83,15 @@ class APIWorkflowDocumentTypeList(generics.ListCreateAPIView):
|
|||||||
"""
|
"""
|
||||||
Extra context provided to the serializer class.
|
Extra context provided to the serializer class.
|
||||||
"""
|
"""
|
||||||
|
context = super(APIWorkflowDocumentTypeList, self).get_serializer_context()
|
||||||
|
if self.kwargs:
|
||||||
|
context.update(
|
||||||
|
{
|
||||||
|
'workflow': self.get_workflow(),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
return {
|
return context
|
||||||
'format': self.format_kwarg,
|
|
||||||
'request': self.request,
|
|
||||||
'workflow': self.get_workflow(),
|
|
||||||
'view': self
|
|
||||||
}
|
|
||||||
|
|
||||||
def get_workflow(self):
|
def get_workflow(self):
|
||||||
"""
|
"""
|
||||||
@@ -152,12 +154,15 @@ class APIWorkflowDocumentTypeView(generics.RetrieveDestroyAPIView):
|
|||||||
"""
|
"""
|
||||||
Extra context provided to the serializer class.
|
Extra context provided to the serializer class.
|
||||||
"""
|
"""
|
||||||
return {
|
context = super(APIWorkflowDocumentTypeView, self).get_serializer_context()
|
||||||
'format': self.format_kwarg,
|
if self.kwargs:
|
||||||
'request': self.request,
|
context.update(
|
||||||
'workflow': self.get_workflow(),
|
{
|
||||||
'view': self
|
'workflow': self.get_workflow(),
|
||||||
}
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return context
|
||||||
|
|
||||||
def get_workflow(self):
|
def get_workflow(self):
|
||||||
"""
|
"""
|
||||||
@@ -282,12 +287,15 @@ class APIWorkflowStateListView(generics.ListCreateAPIView):
|
|||||||
"""
|
"""
|
||||||
Extra context provided to the serializer class.
|
Extra context provided to the serializer class.
|
||||||
"""
|
"""
|
||||||
return {
|
context = super(APIWorkflowStateListView, self).get_serializer_context()
|
||||||
'format': self.format_kwarg,
|
if self.kwargs:
|
||||||
'request': self.request,
|
context.update(
|
||||||
'workflow': self.get_workflow(),
|
{
|
||||||
'view': self
|
'workflow': self.get_workflow(),
|
||||||
}
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return context
|
||||||
|
|
||||||
def get_workflow(self):
|
def get_workflow(self):
|
||||||
if self.request.method == 'GET':
|
if self.request.method == 'GET':
|
||||||
@@ -336,12 +344,15 @@ class APIWorkflowStateView(generics.RetrieveUpdateDestroyAPIView):
|
|||||||
"""
|
"""
|
||||||
Extra context provided to the serializer class.
|
Extra context provided to the serializer class.
|
||||||
"""
|
"""
|
||||||
return {
|
context = super(APIWorkflowStateView, self).get_serializer_context()
|
||||||
'format': self.format_kwarg,
|
if self.kwargs:
|
||||||
'request': self.request,
|
context.update(
|
||||||
'workflow': self.get_workflow(),
|
{
|
||||||
'view': self
|
'workflow': self.get_workflow(),
|
||||||
}
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return context
|
||||||
|
|
||||||
def get_workflow(self):
|
def get_workflow(self):
|
||||||
if self.request.method == 'GET':
|
if self.request.method == 'GET':
|
||||||
@@ -396,12 +407,15 @@ class APIWorkflowTransitionListView(generics.ListCreateAPIView):
|
|||||||
"""
|
"""
|
||||||
Extra context provided to the serializer class.
|
Extra context provided to the serializer class.
|
||||||
"""
|
"""
|
||||||
return {
|
context = super(APIWorkflowTransitionListView, self).get_serializer_context()
|
||||||
'format': self.format_kwarg,
|
if self.kwargs:
|
||||||
'request': self.request,
|
context.update(
|
||||||
'workflow': self.get_workflow(),
|
{
|
||||||
'view': self
|
'workflow': self.get_workflow(),
|
||||||
}
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return context
|
||||||
|
|
||||||
def get_workflow(self):
|
def get_workflow(self):
|
||||||
if self.request.method == 'GET':
|
if self.request.method == 'GET':
|
||||||
@@ -455,12 +469,15 @@ class APIWorkflowTransitionView(generics.RetrieveUpdateDestroyAPIView):
|
|||||||
"""
|
"""
|
||||||
Extra context provided to the serializer class.
|
Extra context provided to the serializer class.
|
||||||
"""
|
"""
|
||||||
return {
|
context = super(APIWorkflowTransitionView, self).get_serializer_context()
|
||||||
'format': self.format_kwarg,
|
if self.kwargs:
|
||||||
'request': self.request,
|
context.update(
|
||||||
'workflow': self.get_workflow(),
|
{
|
||||||
'view': self
|
'workflow': self.get_workflow(),
|
||||||
}
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return context
|
||||||
|
|
||||||
def get_workflow(self):
|
def get_workflow(self):
|
||||||
if self.request.method == 'GET':
|
if self.request.method == 'GET':
|
||||||
@@ -588,12 +605,15 @@ class APIWorkflowInstanceLogEntryListView(generics.ListCreateAPIView):
|
|||||||
return WritableWorkflowInstanceLogEntrySerializer
|
return WritableWorkflowInstanceLogEntrySerializer
|
||||||
|
|
||||||
def get_serializer_context(self):
|
def get_serializer_context(self):
|
||||||
return {
|
context = super(APIWorkflowInstanceLogEntryListView, self).get_serializer_context()
|
||||||
'format': self.format_kwarg,
|
if self.kwargs:
|
||||||
'request': self.request,
|
context.update(
|
||||||
'workflow_instance': self.get_workflow_instance(),
|
{
|
||||||
'view': self
|
'workflow_instance': self.get_workflow_instance(),
|
||||||
}
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return context
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
return self.get_workflow_instance().log_entries.all()
|
return self.get_workflow_instance().log_entries.all()
|
||||||
|
|||||||
@@ -83,6 +83,9 @@ class APIDeletedDocumentView(generics.RetrieveDestroyAPIView):
|
|||||||
class APIDeletedDocumentRestoreView(generics.GenericAPIView):
|
class APIDeletedDocumentRestoreView(generics.GenericAPIView):
|
||||||
"""
|
"""
|
||||||
Restore a trashed document.
|
Restore a trashed document.
|
||||||
|
---
|
||||||
|
POST:
|
||||||
|
omit_serializer: true
|
||||||
"""
|
"""
|
||||||
|
|
||||||
mayan_object_permissions = {
|
mayan_object_permissions = {
|
||||||
@@ -91,6 +94,9 @@ class APIDeletedDocumentRestoreView(generics.GenericAPIView):
|
|||||||
permission_classes = (MayanPermission,)
|
permission_classes = (MayanPermission,)
|
||||||
queryset = Document.trash.all()
|
queryset = Document.trash.all()
|
||||||
|
|
||||||
|
def get_serializer(self, *args, **kwargs):
|
||||||
|
return None
|
||||||
|
|
||||||
def get_serializer_class(self):
|
def get_serializer_class(self):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@@ -127,6 +133,9 @@ class APIDocumentDownloadView(DownloadMixin, generics.RetrieveAPIView):
|
|||||||
def get_mimetype(self):
|
def get_mimetype(self):
|
||||||
return self.get_object().latest_version.mimetype
|
return self.get_object().latest_version.mimetype
|
||||||
|
|
||||||
|
def get_serializer(self, *args, **kwargs):
|
||||||
|
return None
|
||||||
|
|
||||||
def get_serializer_class(self):
|
def get_serializer_class(self):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@@ -240,6 +249,9 @@ class APIDocumentVersionDownloadView(DownloadMixin, generics.RetrieveAPIView):
|
|||||||
def get_mimetype(self):
|
def get_mimetype(self):
|
||||||
return self.get_object().mimetype
|
return self.get_object().mimetype
|
||||||
|
|
||||||
|
def get_serializer(self, *args, **kwargs):
|
||||||
|
return None
|
||||||
|
|
||||||
def get_serializer_class(self):
|
def get_serializer_class(self):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@@ -346,6 +358,9 @@ class APIDocumentPageImageView(generics.RetrieveAPIView):
|
|||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
return self.get_document_version().pages.all()
|
return self.get_document_version().pages.all()
|
||||||
|
|
||||||
|
def get_serializer(self, *args, **kwargs):
|
||||||
|
return None
|
||||||
|
|
||||||
def get_serializer_class(self):
|
def get_serializer_class(self):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@@ -574,6 +589,13 @@ class APIDocumentVersionsListView(generics.ListCreateAPIView):
|
|||||||
mayan_permission_attribute_check = 'document'
|
mayan_permission_attribute_check = 'document'
|
||||||
permission_classes = (MayanPermission,)
|
permission_classes = (MayanPermission,)
|
||||||
|
|
||||||
|
def create(self, request, *args, **kwargs):
|
||||||
|
serializer = self.get_serializer(data=request.data)
|
||||||
|
serializer.is_valid(raise_exception=True)
|
||||||
|
self.perform_create(serializer)
|
||||||
|
headers = self.get_success_headers(serializer.data)
|
||||||
|
return Response(status=status.HTTP_202_ACCEPTED, headers=headers)
|
||||||
|
|
||||||
def get_serializer_class(self):
|
def get_serializer_class(self):
|
||||||
if self.request.method == 'GET':
|
if self.request.method == 'GET':
|
||||||
return DocumentVersionSerializer
|
return DocumentVersionSerializer
|
||||||
@@ -601,13 +623,6 @@ class APIDocumentVersionsListView(generics.ListCreateAPIView):
|
|||||||
APIDocumentVersionsListView, self
|
APIDocumentVersionsListView, self
|
||||||
).post(request, *args, **kwargs)
|
).post(request, *args, **kwargs)
|
||||||
|
|
||||||
def create(self, request, *args, **kwargs):
|
|
||||||
serializer = self.get_serializer(data=request.data)
|
|
||||||
serializer.is_valid(raise_exception=True)
|
|
||||||
self.perform_create(serializer)
|
|
||||||
headers = self.get_success_headers(serializer.data)
|
|
||||||
return Response(status=status.HTTP_202_ACCEPTED, headers=headers)
|
|
||||||
|
|
||||||
|
|
||||||
class APIDocumentVersionView(generics.RetrieveUpdateDestroyAPIView):
|
class APIDocumentVersionView(generics.RetrieveUpdateDestroyAPIView):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -46,6 +46,9 @@ class APISearchView(SearchModelMixin, generics.ListAPIView):
|
|||||||
|
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
def get_serializer(self, *args, **kwargs):
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
class APIAdvancedSearchView(SearchModelMixin, generics.ListAPIView):
|
class APIAdvancedSearchView(SearchModelMixin, generics.ListAPIView):
|
||||||
"""
|
"""
|
||||||
@@ -89,6 +92,9 @@ class APIAdvancedSearchView(SearchModelMixin, generics.ListAPIView):
|
|||||||
|
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
def get_serializer(self, *args, **kwargs):
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
class APISearchModelList(generics.ListAPIView):
|
class APISearchModelList(generics.ListAPIView):
|
||||||
serializer_class = SearchModelSerializer
|
serializer_class = SearchModelSerializer
|
||||||
|
|||||||
@@ -63,13 +63,16 @@ class APIResolvedSmartLinkDocumentListView(generics.ListAPIView):
|
|||||||
"""
|
"""
|
||||||
Extra context provided to the serializer class.
|
Extra context provided to the serializer class.
|
||||||
"""
|
"""
|
||||||
return {
|
context = super(APIResolvedSmartLinkDocumentListView, self).get_serializer_context()
|
||||||
'document': self.get_document(),
|
if self.kwargs:
|
||||||
'format': self.format_kwarg,
|
context.update(
|
||||||
'request': self.request,
|
{
|
||||||
'smart_link': self.get_smart_link(),
|
'document': self.get_document(),
|
||||||
'view': self
|
'smart_link': self.get_smart_link(),
|
||||||
}
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return context
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
return self.get_smart_link().get_linked_document_for(
|
return self.get_smart_link().get_linked_document_for(
|
||||||
@@ -104,12 +107,15 @@ class APIResolvedSmartLinkView(generics.RetrieveAPIView):
|
|||||||
"""
|
"""
|
||||||
Extra context provided to the serializer class.
|
Extra context provided to the serializer class.
|
||||||
"""
|
"""
|
||||||
return {
|
context = super(APIResolvedSmartLinkView, self).get_serializer_context()
|
||||||
'document': self.get_document(),
|
if self.kwargs:
|
||||||
'format': self.format_kwarg,
|
context.update(
|
||||||
'request': self.request,
|
{
|
||||||
'view': self
|
'document': self.get_document(),
|
||||||
}
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return context
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
return SmartLink.objects.get_for(document=self.get_document())
|
return SmartLink.objects.get_for(document=self.get_document())
|
||||||
@@ -141,12 +147,15 @@ class APIResolvedSmartLinkListView(generics.ListAPIView):
|
|||||||
"""
|
"""
|
||||||
Extra context provided to the serializer class.
|
Extra context provided to the serializer class.
|
||||||
"""
|
"""
|
||||||
return {
|
context = super(APIResolvedSmartLinkListView, self).get_serializer_context()
|
||||||
'document': self.get_document(),
|
if self.kwargs:
|
||||||
'format': self.format_kwarg,
|
context.update(
|
||||||
'request': self.request,
|
{
|
||||||
'view': self
|
'document': self.get_document(),
|
||||||
}
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return context
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
return SmartLink.objects.filter(
|
return SmartLink.objects.filter(
|
||||||
@@ -170,12 +179,15 @@ class APISmartLinkConditionListView(generics.ListCreateAPIView):
|
|||||||
"""
|
"""
|
||||||
Extra context provided to the serializer class.
|
Extra context provided to the serializer class.
|
||||||
"""
|
"""
|
||||||
return {
|
context = super(APISmartLinkConditionListView, self).get_serializer_context()
|
||||||
'format': self.format_kwarg,
|
if self.kwargs:
|
||||||
'request': self.request,
|
context.update(
|
||||||
'smart_link': self.get_smart_link(),
|
{
|
||||||
'view': self
|
'smart_link': self.get_smart_link(),
|
||||||
}
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return context
|
||||||
|
|
||||||
def get_smart_link(self):
|
def get_smart_link(self):
|
||||||
if self.request.method == 'GET':
|
if self.request.method == 'GET':
|
||||||
@@ -224,12 +236,15 @@ class APISmartLinkConditionView(generics.RetrieveUpdateDestroyAPIView):
|
|||||||
"""
|
"""
|
||||||
Extra context provided to the serializer class.
|
Extra context provided to the serializer class.
|
||||||
"""
|
"""
|
||||||
return {
|
context = super(APISmartLinkConditionView, self).get_serializer_context()
|
||||||
'format': self.format_kwarg,
|
if self.kwargs:
|
||||||
'request': self.request,
|
context.update(
|
||||||
'smart_link': self.get_smart_link(),
|
{
|
||||||
'view': self
|
'smart_link': self.get_smart_link(),
|
||||||
}
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return context
|
||||||
|
|
||||||
def get_smart_link(self):
|
def get_smart_link(self):
|
||||||
if self.request.method == 'GET':
|
if self.request.method == 'GET':
|
||||||
|
|||||||
@@ -65,13 +65,15 @@ class APIDocumentMetadataListView(generics.ListCreateAPIView):
|
|||||||
"""
|
"""
|
||||||
Extra context provided to the serializer class.
|
Extra context provided to the serializer class.
|
||||||
"""
|
"""
|
||||||
|
context = super(APIDocumentMetadataListView, self).get_serializer_context()
|
||||||
|
if self.kwargs:
|
||||||
|
context.update(
|
||||||
|
{
|
||||||
|
'document': self.get_document(),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
return {
|
return context
|
||||||
'document': self.get_document(),
|
|
||||||
'format': self.format_kwarg,
|
|
||||||
'request': self.request,
|
|
||||||
'view': self
|
|
||||||
}
|
|
||||||
|
|
||||||
def post(self, *args, **kwargs):
|
def post(self, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
@@ -249,13 +251,15 @@ class APIDocumentTypeMetadataTypeListView(generics.ListCreateAPIView):
|
|||||||
"""
|
"""
|
||||||
Extra context provided to the serializer class.
|
Extra context provided to the serializer class.
|
||||||
"""
|
"""
|
||||||
|
context = super(APIDocumentTypeMetadataTypeListView, self).get_serializer_context()
|
||||||
|
if self.kwargs:
|
||||||
|
context.update(
|
||||||
|
{
|
||||||
|
'document_type': self.get_document_type(),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
return {
|
return context
|
||||||
'document_type': self.get_document_type(),
|
|
||||||
'format': self.format_kwarg,
|
|
||||||
'request': self.request,
|
|
||||||
'view': self
|
|
||||||
}
|
|
||||||
|
|
||||||
def post(self, *args, **kwargs):
|
def post(self, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -20,6 +20,9 @@ class APIDocumentOCRView(generics.GenericAPIView):
|
|||||||
permission_classes = (MayanPermission,)
|
permission_classes = (MayanPermission,)
|
||||||
queryset = Document.objects.all()
|
queryset = Document.objects.all()
|
||||||
|
|
||||||
|
def get_serializer(self, *args, **kwargs):
|
||||||
|
return None
|
||||||
|
|
||||||
def get_serializer_class(self):
|
def get_serializer_class(self):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@@ -51,6 +54,9 @@ class APIDocumentVersionOCRView(generics.GenericAPIView):
|
|||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
return self.get_document().versions.all()
|
return self.get_document().versions.all()
|
||||||
|
|
||||||
|
def get_serializer(self, *args, **kwargs):
|
||||||
|
return None
|
||||||
|
|
||||||
def get_serializer_class(self):
|
def get_serializer_class(self):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|||||||
@@ -10,5 +10,5 @@ link_api = Link(
|
|||||||
)
|
)
|
||||||
link_api_documentation = Link(
|
link_api_documentation = Link(
|
||||||
icon='fa fa-book', tags='new_window', text=_('API Documentation'),
|
icon='fa fa-book', tags='new_window', text=_('API Documentation'),
|
||||||
view='django.swagger.base.view'
|
view='schema-swagger-ui'
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -59,6 +59,9 @@ class APIStagingSourceFileImageView(generics.RetrieveAPIView):
|
|||||||
type: number
|
type: number
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
def get_serializer(self, *args, **kwargs):
|
||||||
|
return None
|
||||||
|
|
||||||
def get_serializer_class(self):
|
def get_serializer_class(self):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|||||||
@@ -11,16 +11,9 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
|
|
||||||
class StagingFolderFileSerializer(serializers.Serializer):
|
class StagingFolderFileSerializer(serializers.Serializer):
|
||||||
url = serializers.SerializerMethodField('get_url')
|
|
||||||
image_url = serializers.SerializerMethodField('get_image_url')
|
|
||||||
filename = serializers.CharField(max_length=255)
|
filename = serializers.CharField(max_length=255)
|
||||||
|
image_url = serializers.SerializerMethodField()
|
||||||
def get_url(self, obj):
|
url = serializers.SerializerMethodField()
|
||||||
return reverse(
|
|
||||||
'stagingfolderfile-detail',
|
|
||||||
args=(obj.staging_folder.pk, obj.encoded_filename,),
|
|
||||||
request=self.context.get('request')
|
|
||||||
)
|
|
||||||
|
|
||||||
def get_image_url(self, obj):
|
def get_image_url(self, obj):
|
||||||
return reverse(
|
return reverse(
|
||||||
@@ -29,9 +22,20 @@ class StagingFolderFileSerializer(serializers.Serializer):
|
|||||||
request=self.context.get('request')
|
request=self.context.get('request')
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def get_url(self, obj):
|
||||||
|
return reverse(
|
||||||
|
'stagingfolderfile-detail',
|
||||||
|
args=(obj.staging_folder.pk, obj.encoded_filename,),
|
||||||
|
request=self.context.get('request')
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class StagingFolderSerializer(serializers.HyperlinkedModelSerializer):
|
class StagingFolderSerializer(serializers.HyperlinkedModelSerializer):
|
||||||
files = serializers.SerializerMethodField('get_files')
|
files = serializers.SerializerMethodField()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
fields = ('files',)
|
||||||
|
model = StagingFolderSource
|
||||||
|
|
||||||
def get_files(self, obj):
|
def get_files(self, obj):
|
||||||
try:
|
try:
|
||||||
@@ -42,9 +46,6 @@ class StagingFolderSerializer(serializers.HyperlinkedModelSerializer):
|
|||||||
logger.error('unhandled exception: %s', exception)
|
logger.error('unhandled exception: %s', exception)
|
||||||
return []
|
return []
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = StagingFolderSource
|
|
||||||
|
|
||||||
|
|
||||||
class WebFormSourceSerializer(serializers.Serializer):
|
class WebFormSourceSerializer(serializers.Serializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|||||||
@@ -153,12 +153,15 @@ class APIDocumentTagListView(generics.ListCreateAPIView):
|
|||||||
"""
|
"""
|
||||||
Extra context provided to the serializer class.
|
Extra context provided to the serializer class.
|
||||||
"""
|
"""
|
||||||
return {
|
context = super(APIDocumentTagListView, self).get_serializer_context()
|
||||||
'format': self.format_kwarg,
|
if self.kwargs:
|
||||||
'request': self.request,
|
context.update(
|
||||||
'document': self.get_document(),
|
{
|
||||||
'view': self
|
'document': self.get_document(),
|
||||||
}
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return context
|
||||||
|
|
||||||
def perform_create(self, serializer):
|
def perform_create(self, serializer):
|
||||||
serializer.save(document=self.get_document())
|
serializer.save(document=self.get_document())
|
||||||
@@ -213,12 +216,15 @@ class APIDocumentTagView(generics.RetrieveDestroyAPIView):
|
|||||||
"""
|
"""
|
||||||
Extra context provided to the serializer class.
|
Extra context provided to the serializer class.
|
||||||
"""
|
"""
|
||||||
return {
|
context = super(APIDocumentTagView, self).get_serializer_context()
|
||||||
'format': self.format_kwarg,
|
if self.kwargs:
|
||||||
'request': self.request,
|
context.update(
|
||||||
'document': self.get_document(),
|
{
|
||||||
'view': self
|
'document': self.get_document(),
|
||||||
}
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return context
|
||||||
|
|
||||||
def perform_destroy(self, instance):
|
def perform_destroy(self, instance):
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -201,12 +201,15 @@ class APIUserGroupList(generics.ListCreateAPIView):
|
|||||||
"""
|
"""
|
||||||
Extra context provided to the serializer class.
|
Extra context provided to the serializer class.
|
||||||
"""
|
"""
|
||||||
return {
|
context = super(APIUserGroupList, self).get_serializer_context()
|
||||||
'format': self.format_kwarg,
|
if self.kwargs:
|
||||||
'request': self.request,
|
context.update(
|
||||||
'user': self.get_user(),
|
{
|
||||||
'view': self
|
'user': self.get_user(),
|
||||||
}
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
return context
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
user = self.get_user()
|
user = self.get_user()
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ INSTALLED_APPS = (
|
|||||||
'tags',
|
'tags',
|
||||||
'task_manager',
|
'task_manager',
|
||||||
# Placed after rest_api to allow template overriding
|
# Placed after rest_api to allow template overriding
|
||||||
'rest_framework_swagger',
|
'drf_yasg',
|
||||||
)
|
)
|
||||||
|
|
||||||
MIDDLEWARE_CLASSES = (
|
MIDDLEWARE_CLASSES = (
|
||||||
@@ -261,6 +261,7 @@ REST_FRAMEWORK = {
|
|||||||
'rest_framework.authentication.TokenAuthentication',
|
'rest_framework.authentication.TokenAuthentication',
|
||||||
'rest_framework.authentication.BasicAuthentication',
|
'rest_framework.authentication.BasicAuthentication',
|
||||||
),
|
),
|
||||||
|
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
|
||||||
'PAGE_SIZE': 10,
|
'PAGE_SIZE': 10,
|
||||||
}
|
}
|
||||||
# --------- Pagination --------
|
# --------- Pagination --------
|
||||||
@@ -283,20 +284,12 @@ CELERY_TIMEZONE = 'UTC'
|
|||||||
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
|
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
|
||||||
# ------------ CORS ------------
|
# ------------ CORS ------------
|
||||||
CORS_ORIGIN_ALLOW_ALL = True
|
CORS_ORIGIN_ALLOW_ALL = True
|
||||||
# ------ Django REST Swagger -----
|
|
||||||
SWAGGER_SETTINGS = {
|
|
||||||
'api_version': '1',
|
|
||||||
'info': {
|
|
||||||
'title': _('Mayan EDMS API Documentation'),
|
|
||||||
'description': _('Free Open Source Document Management System.'),
|
|
||||||
'contact': 'roberto.rosario@mayan-edms.com',
|
|
||||||
'license': 'Apache 2.0',
|
|
||||||
'licenseUrl': 'http://www.apache.org/licenses/LICENSE-2.0.html'
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
# ------ Timezone --------
|
# ------ Timezone --------
|
||||||
TIMEZONE_COOKIE_NAME = 'django_timezone'
|
TIMEZONE_COOKIE_NAME = 'django_timezone'
|
||||||
TIMEZONE_SESSION_KEY = 'django_timezone'
|
TIMEZONE_SESSION_KEY = 'django_timezone'
|
||||||
# ----- Stronghold -------
|
# ----- Stronghold -------
|
||||||
STRONGHOLD_PUBLIC_URLS = (r'^/docs/.+$',)
|
STRONGHOLD_PUBLIC_URLS = (r'^/docs/.+$',)
|
||||||
|
# ----- Swagger --------
|
||||||
|
SWAGGER_SETTINGS = {
|
||||||
|
'DOC_EXPANSION': 'None',
|
||||||
|
}
|
||||||
|
|||||||
@@ -3,12 +3,32 @@ from __future__ import unicode_literals
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.conf.urls import include, url
|
from django.conf.urls import include, url
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
|
from drf_yasg import openapi
|
||||||
|
from drf_yasg.views import get_schema_view
|
||||||
|
from rest_framework import permissions
|
||||||
|
|
||||||
|
import mayan
|
||||||
|
|
||||||
admin.autodiscover()
|
admin.autodiscover()
|
||||||
|
schema_view = get_schema_view(
|
||||||
|
openapi.Info(
|
||||||
|
title=_('%s API') % mayan.__title__,
|
||||||
|
default_version='v2',
|
||||||
|
description=mayan.__description__,
|
||||||
|
license=openapi.License(name=mayan.__license__),
|
||||||
|
),
|
||||||
|
validators=['flex', 'ssv'],
|
||||||
|
public=True,
|
||||||
|
permission_classes=(permissions.AllowAny,),
|
||||||
|
)
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
url(r'^admin/', admin.site.urls),
|
url(r'^admin/', admin.site.urls),
|
||||||
url(r'^docs/', include('rest_framework_swagger.urls')),
|
url(r'^swagger(?P<format>.json|.yaml)$', schema_view.without_ui(cache_timeout=None), name='schema-json'),
|
||||||
|
url(r'^swagger/$', schema_view.with_ui('swagger', cache_timeout=None), name='schema-swagger-ui'),
|
||||||
|
url(r'^redoc/$', schema_view.with_ui('redoc', cache_timeout=None), name='schema-redoc'),
|
||||||
]
|
]
|
||||||
|
|
||||||
if settings.DEBUG:
|
if settings.DEBUG:
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
# Packages to be remove during upgrades
|
# Packages to be remove during upgrades
|
||||||
django-filetransfers
|
django-filetransfers
|
||||||
|
django-rest-swagger
|
||||||
pytesseract
|
pytesseract
|
||||||
pdfminer
|
pdfminer
|
||||||
|
|||||||
@@ -17,13 +17,14 @@ django-mathfilters==0.4.0
|
|||||||
django-model-utils==3.1.1
|
django-model-utils==3.1.1
|
||||||
django-mptt==0.9.0
|
django-mptt==0.9.0
|
||||||
django-qsstats-magic==0.7.2
|
django-qsstats-magic==0.7.2
|
||||||
django-rest-swagger==0.3.10
|
|
||||||
django-stronghold==0.2.8
|
django-stronghold==0.2.8
|
||||||
django-suit==0.2.25
|
django-suit==0.2.25
|
||||||
django-widget-tweaks==1.4.1
|
django-widget-tweaks==1.4.1
|
||||||
djangorestframework==3.3.2
|
djangorestframework==3.7.7
|
||||||
djangorestframework-recursive==0.1.1
|
djangorestframework-recursive==0.1.2
|
||||||
|
drf-yasg==1.4.4
|
||||||
|
|
||||||
|
flex==6.12.0
|
||||||
furl==1.0.0
|
furl==1.0.0
|
||||||
fusepy==2.0.4
|
fusepy==2.0.4
|
||||||
|
|
||||||
@@ -42,3 +43,4 @@ pytz==2016.7
|
|||||||
requests==2.18.4
|
requests==2.18.4
|
||||||
|
|
||||||
sh==1.12.11
|
sh==1.12.11
|
||||||
|
swagger-spec-validator==2.1.0
|
||||||
|
|||||||
Reference in New Issue
Block a user