# 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