49 lines
1.8 KiB
Python
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
|