Files
backend-v1/core/apps/evaluation/views/vehicle.py

49 lines
1.8 KiB
Python

# django core
from django.http import HttpResponse
from django_core.mixins import BaseViewSetMixin
# swagger
from drf_spectacular.utils import extend_schema
# rest framework
from rest_framework.permissions import AllowAny
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework.viewsets import ReadOnlyModelViewSet
# core apps
from core.apps.evaluation.models import VehicleModel
from core.apps.evaluation.serializers import vehicle as serialziers, VehicleApplicationSerializer
from core.utils.generation_pdf import PDFService
@extend_schema(tags=["Vehicle"])
class VehicleView(BaseViewSetMixin, ReadOnlyModelViewSet):
queryset = VehicleModel.objects.select_related(
"brand", "model", "color", "fuel_type", "body_type", "position",
).all()
serializer_class = serialziers.ListVehicleSerializer
permission_classes = [AllowAny]
action_permission_classes = {}
action_serializer_class = {
"list": serialziers.ListVehicleSerializer,
"retrieve": serialziers.RetrieveVehicleSerializer,
"create": serialziers.CreateVehicleSerializer,
}
@extend_schema(tags=['GenerationDocument'], request=VehicleApplicationSerializer)
class GeneratePDFView(APIView):
permission_classes = [IsAuthenticated]
def post(self, request):
serializer = VehicleApplicationSerializer(data=request.data)
if not serializer.is_valid():
return Response(serializer.errors, status=400)
pdf_buffer = PDFService.generate_vehicle_pdf(serializer.validated_data)
response = HttpResponse(pdf_buffer, content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename="ariza.pdf"'
return response