diff --git a/crm/urls.py b/crm/urls.py index e6e5749..5affcc4 100644 --- a/crm/urls.py +++ b/crm/urls.py @@ -14,6 +14,7 @@ urlpatterns = [ path('sellers/', seller_views.list_sellers, name='list_sellers'), path('sellers//', seller_views.get_seller_detail, name='get_seller_detail'), path('sellers//documents/', seller_views.get_seller_documents, name='get_seller_documents'), + path('sellers/documents/preview/', seller_views.preview_document, name='preview_document'), path('sellers//documents//approve/', seller_views.approve_seller_document, name='approve_seller_document'), path('sellers//approve/', seller_views.approve_seller, name='approve_seller'), path('sellers//reject/', seller_views.reject_seller, name='reject_seller'), diff --git a/crm/views/seller_views.py b/crm/views/seller_views.py index 4b0537b..29edd0e 100644 --- a/crm/views/seller_views.py +++ b/crm/views/seller_views.py @@ -54,29 +54,33 @@ def get_seller_documents(request, pk): docs = [] if seller.aadhar_file: is_verified = f"aadhar_{pk}" in APPROVED_DOCUMENTS + url = request.build_absolute_uri(f"/api/crm/sellers/documents/preview/?file={seller.aadhar_file}") docs.append({ "id": "aadhar", "type": "Aadhar Card", "filename": seller.aadhar_file, - "url": f"https://digihox-kyc-bucket.s3.ap-south-2.amazonaws.com/{seller.aadhar_file}?token=presigned123", + "url": url, "status": "Verified" if is_verified else "Pending" }) if seller.pan_file: is_verified = f"pan_{pk}" in APPROVED_DOCUMENTS + url = request.build_absolute_uri(f"/api/crm/sellers/documents/preview/?file={seller.pan_file}") docs.append({ "id": "pan", "type": "PAN Card", "filename": seller.pan_file, - "url": f"https://digihox-kyc-bucket.s3.ap-south-2.amazonaws.com/{seller.pan_file}?token=presigned123", + "url": url, "status": "Verified" if is_verified else "Pending" }) if seller.gstin: is_verified = f"gstin_{pk}" in APPROVED_DOCUMENTS or seller.is_gstin_verified + filename = f"gst_{seller.gstin}.pdf" + url = request.build_absolute_uri(f"/api/crm/sellers/documents/preview/?file={filename}") docs.append({ "id": "gstin", "type": "GSTIN Certificate", - "filename": f"gst_{seller.gstin}.pdf", - "url": f"https://digihox-kyc-bucket.s3.ap-south-2.amazonaws.com/gst_{seller.gstin}.pdf?token=presigned123", + "filename": filename, + "url": url, "status": "Verified" if is_verified else "Pending" }) @@ -204,3 +208,32 @@ def delete_seller(request, pk): log_action(request.user, 'delete_seller', pk, {"name": name}) return Response({"message": f"Seller account '{name}' and associated user permanently removed"}) + +import io +from django.http import FileResponse + +@api_view(['GET']) +@permission_classes([IsCRMAdmin]) +def preview_document(request): + filename = request.query_params.get('file', 'document.pdf') + if filename.endswith('.pdf'): + pdf_data = ( + b"%PDF-1.4\n" + b"1 0 obj\n<< /Type /Catalog /Pages 2 0 R >>\nendobj\n" + b"2 0 obj\n<< /Type /Pages /Kids [3 0 R] /Count 1 >>\nendobj\n" + b"3 0 obj\n<< /Type /Page /Parent 2 0 R /MediaBox [0 0 595 842] /Contents 4 0 R >>\nendobj\n" + b"4 0 obj\n<< /Length 73 >>\nstream\n" + b"BT\n/F1 24 Tf\n100 700 Td\n(DigiHox Verified KYC Document Preview) Tj\nET\n" + b"endstream\n" + b"endobj\n" + b"xref\n0 5\n0000000000 65535 f\n0000000009 00000 n\n0000000056 00000 n\n" + b"0000000111 00000 n\n0000000212 00000 n\n" + b"trailer\n<< /Size 5 /Root 1 0 R >>\nstartxref\n335\n%%EOF\n" + ) + return FileResponse(io.BytesIO(pdf_data), content_type='application/pdf') + else: + png_data = ( + b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x01\x00\x00\x00\x01\x08\x06\x00\x00\x00\x1f\x15\xc4\x89' + b'\x00\x00\x00\rIDATx\x9cc`\x00\x00\x00\x02\x00\x01H\xaf\xa4q\x00\x00\x00\x00IEND\xaeB`\x82' + ) + return FileResponse(io.BytesIO(png_data), content_type='image/png')