Fix and modernize the document checkout API view. Move API logic to serializer.
Signed-off-by: Michael Price <loneviking72@gmail.com>
This commit is contained in:
committed by
Roberto Rosario
parent
3165912837
commit
55ba6786b3
@@ -1,21 +1,14 @@
|
||||
from __future__ import absolute_import, unicode_literals
|
||||
|
||||
import pytz
|
||||
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.utils.encoding import force_text
|
||||
|
||||
from rest_framework import generics, status
|
||||
from rest_framework.response import Response
|
||||
from rest_framework import generics
|
||||
|
||||
from acls.models import AccessControlList
|
||||
from documents.models import Document
|
||||
from documents.permissions import permission_document_view
|
||||
|
||||
from .models import DocumentCheckout
|
||||
from .permissions import (
|
||||
permission_document_checkin, permission_document_checkin_override,
|
||||
permission_document_checkout, permission_document_checkout_detail_view
|
||||
permission_document_checkout_detail_view
|
||||
)
|
||||
from .serializers import (
|
||||
DocumentCheckoutSerializer, NewDocumentCheckoutSerializer
|
||||
@@ -56,38 +49,9 @@ class APICheckedoutDocumentListView(generics.ListCreateAPIView):
|
||||
"""
|
||||
Checkout a document.
|
||||
"""
|
||||
|
||||
serializer = self.get_serializer(data=request.DATA, files=request.FILES)
|
||||
|
||||
if serializer.is_valid():
|
||||
document = get_object_or_404(
|
||||
Document, pk=serializer.data['document']
|
||||
)
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=permission_document_checkout, user=request.user,
|
||||
obj=document
|
||||
)
|
||||
|
||||
timezone = pytz.utc
|
||||
|
||||
try:
|
||||
DocumentCheckout.objects.create(
|
||||
document=document,
|
||||
expiration_datetime=timezone.localize(
|
||||
serializer.data['expiration_datetime']
|
||||
),
|
||||
user=request.user,
|
||||
block_new_version=serializer.data['block_new_version']
|
||||
)
|
||||
except Exception as exception:
|
||||
return Response(
|
||||
data={'exception': force_text(exception)},
|
||||
status=status.HTTP_400_BAD_REQUEST
|
||||
)
|
||||
|
||||
return Response(status=status.HTTP_201_CREATED)
|
||||
|
||||
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||
return super(
|
||||
APICheckedoutDocumentListView, self
|
||||
).post(request, *args, **kwargs)
|
||||
|
||||
|
||||
class APICheckedoutDocumentView(generics.RetrieveDestroyAPIView):
|
||||
|
||||
Reference in New Issue
Block a user