add generation_pdf pdf , fix 500 error , install reportlab
This commit is contained in:
@@ -87,3 +87,29 @@ class CreateVehicleSerializer(serializers.ModelSerializer):
|
||||
"condition",
|
||||
"position",
|
||||
]
|
||||
|
||||
|
||||
class VehicleApplicationSerializer(serializers.Serializer):
|
||||
person_name = serializers.CharField()
|
||||
property_owner = serializers.CharField(max_length=100)
|
||||
address = serializers.CharField(max_length=255)
|
||||
marka = serializers.CharField(max_length=100)
|
||||
model = serializers.CharField(max_length=100)
|
||||
configuration = serializers.CharField(max_length=100)
|
||||
auto_number = serializers.CharField(max_length=100)
|
||||
date_created = serializers.DateTimeField()
|
||||
mileage = serializers.IntegerField()
|
||||
vehicle_identification = serializers.CharField(max_length=100)
|
||||
engine_number = serializers.CharField(max_length=100)
|
||||
colour = serializers.CharField(max_length=100)
|
||||
registration_certificate_series = serializers.CharField(max_length=100)
|
||||
tec_passport_number = serializers.CharField(max_length=100)
|
||||
tec_passport_date = serializers.DateTimeField()
|
||||
tec_passport_place = serializers.CharField(max_length=255)
|
||||
body_type = serializers.CharField(max_length=100)
|
||||
chassis = serializers.CharField(max_length=100)
|
||||
plate = serializers.CharField(max_length=100)
|
||||
value_type = serializers.CharField(max_length=100)
|
||||
evaluation_purpose = serializers.CharField(max_length=100)
|
||||
personal_id_number = serializers.IntegerField()
|
||||
id_number = serializers.CharField(max_length=9)
|
||||
|
||||
@@ -88,4 +88,5 @@ urlpatterns = [
|
||||
)),
|
||||
|
||||
path("calculate_avg_cost/", views.AvgCostAPIView.as_view()),
|
||||
path("vehicle_document/", views.GeneratePDFView.as_view()),
|
||||
]
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user