add generation_pdf pdf , fix 500 error , install reportlab

This commit is contained in:
Shaxobff
2026-05-04 16:15:12 +05:00
parent 1ff23af8bf
commit 0c9c726756
7 changed files with 195 additions and 10 deletions

View File

@@ -1,16 +1,19 @@
# 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
from core.apps.evaluation.serializers import vehicle as serialziers, VehicleApplicationSerializer
from core.utils.generation_pdf import PDFService
@extend_schema(tags=["Vehicle"])
@@ -27,3 +30,19 @@ class VehicleView(BaseViewSetMixin, ReadOnlyModelViewSet):
"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