dodati payment kodovi, generisanje kodova, pdf view,promena payment page
This commit is contained in:
@@ -3,7 +3,7 @@ import yaml
|
||||
|
||||
from django.shortcuts import render, redirect , get_object_or_404
|
||||
from .forms import OrganizationForm
|
||||
from .models import Organization,Document, DocumentTemplate
|
||||
from .models import Organization,Document, DocumentTemplate, PaymentCode
|
||||
from backend.accounts.utils import send_confirmation_email, send_document_email
|
||||
from django.contrib.admin.views.decorators import staff_member_required
|
||||
from .utils import generate_pdf, generate_risk_graph, generate_residual_risk_graph
|
||||
@@ -11,11 +11,13 @@ from .tables import risk_matrix_table ,get_risk_table, get_safeguard_summary_tab
|
||||
from django.conf import settings
|
||||
site_domain = settings.SITE_DOMAIN
|
||||
from .processors import render_template
|
||||
from django.http import JsonResponse, FileResponse, Http404
|
||||
from django.http import JsonResponse, FileResponse, Http404, HttpResponse
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.core.validators import validate_email
|
||||
import os
|
||||
|
||||
from django.utils import timezone
|
||||
from weasyprint import HTML
|
||||
from django.template.loader import render_to_string
|
||||
|
||||
|
||||
# @login_required
|
||||
@@ -112,16 +114,28 @@ def pdf_view(request, document_id):
|
||||
return generate_pdf(document)
|
||||
|
||||
def payment_page(request):
|
||||
email = request.GET.get("email")
|
||||
organization = get_object_or_404(Organization, email=email)
|
||||
document = get_object_or_404(Document, organization=organization)
|
||||
|
||||
if request.method == "POST":
|
||||
pdf_url = f"{site_domain}/pdf/{document.id}/"
|
||||
send_document_email(email, pdf_url, document)
|
||||
return redirect(pdf_url)
|
||||
|
||||
return render(request, "payment.html", {"email": email})
|
||||
error = None
|
||||
email = request.GET.get('email')
|
||||
if request.method == 'POST':
|
||||
import re
|
||||
code = re.sub(r'\s+', '', request.POST.get('code', '')).upper()[:10]
|
||||
try:
|
||||
payment_code = PaymentCode.objects.get(code=code)
|
||||
if payment_code.used:
|
||||
error = "CODE INVALID"
|
||||
else:
|
||||
org = Organization.objects.filter(email__iexact=email).first()
|
||||
payment_code.used = True
|
||||
payment_code.used_at = timezone.now()
|
||||
payment_code.company = org
|
||||
payment_code.save()
|
||||
document = Document.objects.get(organization = org)
|
||||
url = f"{site_domain}/pdf/{document.id}/"
|
||||
send_document_email(email, url, document)
|
||||
return redirect(url)
|
||||
except PaymentCode.DoesNotExist:
|
||||
error = "CODE INVALID"
|
||||
return render(request, 'payment.html', {'error': error})
|
||||
|
||||
def no_confidential_data(request):
|
||||
return render(request, "no_confidential_data.html")
|
||||
@@ -131,4 +145,20 @@ def download_example_pdf(request):
|
||||
pdf_path = os.path.join(settings.BASE_DIR, 'backend/core/static/pdf/risklet_example_document.pdf')
|
||||
if not os.path.exists(pdf_path):
|
||||
raise Http404("File not found.")
|
||||
return FileResponse(open(pdf_path, 'rb'), as_attachment=True, filename='risklet_example_document.pdf')
|
||||
return FileResponse(open(pdf_path, 'rb'), as_attachment=True, filename='risklet_example_document.pdf')
|
||||
|
||||
|
||||
@staff_member_required
|
||||
def payment_codes_pdf_view(request):
|
||||
filter_by = request.GET.get('filter_by', 'all')
|
||||
if filter_by == 'used':
|
||||
codes = PaymentCode.objects.filter(used=True)
|
||||
elif filter_by == 'available':
|
||||
codes = PaymentCode.objects.filter(used=False)
|
||||
else:
|
||||
codes = PaymentCode.objects.all()
|
||||
html_string = render_to_string('payment_code_report.html', {'codes': codes})
|
||||
pdf_content = HTML(string=html_string, base_url=request.build_absolute_uri('/')).write_pdf()
|
||||
response = HttpResponse(pdf_content, content_type='application/pdf')
|
||||
response['Content-Disposition'] = f'inline; filename=payment_codes_{timezone.now().strftime("%Y%m%d_%H%M%S")}.pdf'
|
||||
return response
|
||||
Reference in New Issue
Block a user