backend/checker/api/views.py

59 lines
1.8 KiB
Python

from rest_framework import generics
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework.generics import get_object_or_404
from rest_framework.parsers import MultiPartParser, FormParser
from checker.api.serializers import (
DocxSerializer,
DocxStateSerializer,
WordDocxSerializer,
WordDocxStateSerializer,
)
from checker.models import Docx, ParagraphType, WordDocx
class ListCreateDocxApiView(generics.ListCreateAPIView):
parser_classes = [FormParser, MultiPartParser]
serializer_class = DocxSerializer
queryset = Docx.objects.all()
class GetDocxState(generics.RetrieveAPIView):
lookup_field = "uuid"
queryset = Docx.objects.all()
serializer_class = DocxStateSerializer
class RetireDocxSerializer(APIView):
def get(self, request, uuid):
doc = get_object_or_404(Docx, uuid=uuid)
res = {}
paragraphs = ParagraphType.objects.all()
for p in paragraphs:
res[p.name] = [(x.text, x.score) for x in p.paragraphs.filter(docx=doc)]
return Response(res)
class ListCreateWordDocxApiView(generics.ListCreateAPIView):
parser_classes = [FormParser, MultiPartParser]
serializer_class = WordDocxSerializer
queryset = WordDocx.objects.all()
class GetWordDocxState(generics.RetrieveAPIView):
lookup_field = "uuid"
queryset = WordDocx.objects.all()
serializer_class = WordDocxStateSerializer
class RetireWordDocxSerializer(APIView):
# TODO create base class
def get(self, request, uuid):
doc = get_object_or_404(WordDocx, uuid=uuid)
res = {}
paragraphs = ParagraphType.objects.all()
for p in paragraphs:
res[p.name] = [(x.text, x.score) for x in p.word_paragraphs.filter(docx=doc)]
return Response(res)