changed payment code to demo code
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
from django.contrib import admin
|
||||
from .models import Document, DocumentSegment, Organization, Risk, Control, DocumentTemplate, DocumentRiskControl, PaymentCode
|
||||
from .models import Document, DocumentSegment, Organization, Risk, Control, DocumentTemplate, DocumentRiskControl, DemoCode
|
||||
from django.urls import reverse
|
||||
from django.utils.html import format_html
|
||||
from .utils import generate_payment_code
|
||||
from .utils import generate_demo_code
|
||||
from django.urls import path
|
||||
from django.shortcuts import render, redirect
|
||||
from .forms import GenerateCodesForm
|
||||
@@ -44,10 +44,10 @@ class ControlAdmin(admin.ModelAdmin):
|
||||
class DocumentRiskControlAdmin(admin.ModelAdmin):
|
||||
list_display = ('document', 'risk', 'control', 'weight','likelihood')
|
||||
|
||||
class PaymentCodeAdmin(admin.ModelAdmin):
|
||||
class DemoCodeAdmin(admin.ModelAdmin):
|
||||
|
||||
list_display = ('code', 'created_at', 'used', 'company', 'used_at')
|
||||
change_list_template = "admin/paymentcode_changelist.html"
|
||||
change_list_template = "admin/democode_changelist.html"
|
||||
|
||||
def get_urls(self):
|
||||
urls = super().get_urls()
|
||||
@@ -64,9 +64,9 @@ class PaymentCodeAdmin(admin.ModelAdmin):
|
||||
created = 0
|
||||
for _ in range(count):
|
||||
while True:
|
||||
code = generate_payment_code()
|
||||
if not PaymentCode.objects.filter(code=code).exists():
|
||||
PaymentCode.objects.create(code=code)
|
||||
code = generate_demo_code()
|
||||
if not DemoCode.objects.filter(code=code).exists():
|
||||
DemoCode.objects.create(code=code)
|
||||
created += 1
|
||||
break
|
||||
self.message_user(request, f"{created} codes generated.")
|
||||
@@ -82,4 +82,4 @@ admin.site.register(Risk ,RiskAdmin)
|
||||
admin.site.register(Control, ControlAdmin)
|
||||
admin.site.register(DocumentTemplate, DocumentTemplateAdmin)
|
||||
admin.site.register(DocumentRiskControl, DocumentRiskControlAdmin)
|
||||
admin.site.register(PaymentCode, PaymentCodeAdmin)
|
||||
admin.site.register(DemoCode, DemoCodeAdmin)
|
||||
|
||||
17
backend/core/migrations/0018_rename_paymentcode_democode.py
Normal file
17
backend/core/migrations/0018_rename_paymentcode_democode.py
Normal file
@@ -0,0 +1,17 @@
|
||||
# Generated by Django 5.1.3 on 2025-07-13 22:45
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('core', '0017_document_key_findings'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameModel(
|
||||
old_name='PaymentCode',
|
||||
new_name='DemoCode',
|
||||
),
|
||||
]
|
||||
@@ -175,7 +175,7 @@ class DocumentRiskControl(models.Model):
|
||||
unique_together = ('document', 'risk', 'control')
|
||||
|
||||
|
||||
class PaymentCode(models.Model):
|
||||
class DemoCode(models.Model):
|
||||
code = models.CharField(max_length=10, unique=True)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
used = models.BooleanField(default=False)
|
||||
|
||||
14
backend/core/templates/admin/democode_changelist.html
Normal file
14
backend/core/templates/admin/democode_changelist.html
Normal file
@@ -0,0 +1,14 @@
|
||||
{% extends "admin/change_list.html" %}
|
||||
{% block object-tools %}
|
||||
<div style="padding: 12px 0;">
|
||||
<div style="padding: 12px 0;">
|
||||
<a href="{% url 'admin:generate-codes' %}" class="button">Generate Demo Codes</a>
|
||||
</div>
|
||||
<div style="padding: 12px 0;">
|
||||
<a href="{% url 'core:demo_codes_pdf' %}?filter_by=all" class="button">All (PDF)</a>
|
||||
<a href="{% url 'core:demo_codes_pdf' %}?filter_by=used" class="button">Used (PDF)</a>
|
||||
<a href="{% url 'core:demo_codes_pdf' %}?filter_by=available" class="button">Unused (PDF)</a>
|
||||
</div>
|
||||
</div>
|
||||
{{ block.super }}
|
||||
{% endblock %}
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
{% block content %}
|
||||
<div id="content-main">
|
||||
<h2>Generate Payment Codes</h2>
|
||||
<h2>Generate Demo Codes</h2>
|
||||
<form method="post">{% csrf_token %}
|
||||
{{ form.as_p }}
|
||||
<input type="submit" name="apply" value="Generate" class="default">
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
{% extends "admin/change_list.html" %}
|
||||
{% block object-tools %}
|
||||
<div style="padding: 12px 0;">
|
||||
<div style="padding: 12px 0;">
|
||||
<a href="{% url 'admin:generate-codes' %}" class="button">Generate Payment Codes</a>
|
||||
</div>
|
||||
<div style="padding: 12px 0;">
|
||||
<a href="{% url 'core:payment_codes_pdf' %}?filter_by=all" class="button">All (PDF)</a>
|
||||
<a href="{% url 'core:payment_codes_pdf' %}?filter_by=used" class="button">Used (PDF)</a>
|
||||
<a href="{% url 'core:payment_codes_pdf' %}?filter_by=available" class="button">Unused (PDF)</a>
|
||||
</div>
|
||||
</div>
|
||||
{{ block.super }}
|
||||
{% endblock %}
|
||||
@@ -4,11 +4,11 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>PDF payment report</title>
|
||||
<title>Demo codes report</title>
|
||||
<link rel="stylesheet" href="{% static 'css/document.css' %}">
|
||||
</head>
|
||||
<body>
|
||||
<h1>Payment Codes Report</h1>
|
||||
<h1>Demo Codes Report</h1>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
@@ -3,7 +3,7 @@
|
||||
<section class="py-24 bg-gradient-to-br from-teal-100 to-primary flex items-center justify-center">
|
||||
<div class="max-w-md w-full mx-auto text-center shadow-2xl border border-accent rounded-2xl p-4 bg-white/90 backdrop-blur">
|
||||
<h2 class="text-3xl font-extrabold mb-6 text-accent">Payment</h2>
|
||||
<p class="text-lg text-gray-700 mb-6">Please enter your payment code to proceed to document.</p>
|
||||
<p class="text-lg text-gray-700 mb-6">Please enter your demo code to proceed to document.</p>
|
||||
|
||||
{% if success %}
|
||||
<p class="text-green-600 font-semibold mb-4">{{ success }}</p>
|
||||
|
||||
@@ -19,6 +19,6 @@ urlpatterns = [
|
||||
path('validate_code/', v.validate_code, name='validate_code'),
|
||||
|
||||
#admin urls
|
||||
path('admin/payment-codes-pdf/', v.payment_codes_pdf_view, name='payment_codes_pdf'),
|
||||
path('admin/demo-codes-pdf/', v.demo_codes_pdf_view, name='demo_codes_pdf'),
|
||||
|
||||
]
|
||||
|
||||
@@ -400,6 +400,6 @@ def generate_residual_risk_graph(risks_with_controls):
|
||||
|
||||
return base64.b64encode(image_png).decode("utf-8")
|
||||
|
||||
def generate_payment_code(length=6):
|
||||
def generate_demo_code(length=6):
|
||||
chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789'
|
||||
return ''.join(random.choices(chars, k=length))
|
||||
@@ -6,7 +6,7 @@ import time
|
||||
|
||||
from django.shortcuts import render, redirect , get_object_or_404
|
||||
from .forms import OrganizationForm
|
||||
from .models import Organization,Document, DocumentTemplate, PaymentCode
|
||||
from .models import Organization,Document, DocumentTemplate, DemoCode
|
||||
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
|
||||
@@ -123,7 +123,7 @@ def payment_page(request):
|
||||
import re
|
||||
code = re.sub(r'\s+', '', request.POST.get('code', '')).upper()[:10]
|
||||
try:
|
||||
payment_code = PaymentCode.objects.get(code=code)
|
||||
payment_code = DemoCode.objects.get(code=code)
|
||||
if payment_code.used:
|
||||
error = "CODE INVALID"
|
||||
else:
|
||||
@@ -136,7 +136,7 @@ def payment_page(request):
|
||||
url = f"{site_domain}/pdf/{document.id}/"
|
||||
send_document_email(email, url, document)
|
||||
return redirect(url)
|
||||
except PaymentCode.DoesNotExist:
|
||||
except DemoCode.DoesNotExist:
|
||||
error = "❌ Invalid code"
|
||||
return render(request, 'payment.html', {'error': error})
|
||||
|
||||
@@ -152,18 +152,18 @@ def download_example_pdf(request):
|
||||
|
||||
|
||||
@staff_member_required
|
||||
def payment_codes_pdf_view(request):
|
||||
def demo_codes_pdf_view(request):
|
||||
filter_by = request.GET.get('filter_by', 'all')
|
||||
if filter_by == 'used':
|
||||
codes = PaymentCode.objects.filter(used=True)
|
||||
codes = DemoCode.objects.filter(used=True)
|
||||
elif filter_by == 'available':
|
||||
codes = PaymentCode.objects.filter(used=False)
|
||||
codes = DemoCode.objects.filter(used=False)
|
||||
else:
|
||||
codes = PaymentCode.objects.all()
|
||||
html_string = render_to_string('payment_code_report.html', {'codes': codes})
|
||||
codes = DemoCode.objects.all()
|
||||
html_string = render_to_string('demo_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'
|
||||
response['Content-Disposition'] = f'inline; filename=demo_codes_{timezone.now().strftime("%Y%m%d_%H%M%S")}.pdf'
|
||||
return response
|
||||
|
||||
@csrf_exempt
|
||||
@@ -172,8 +172,8 @@ def validate_code(request):
|
||||
try:
|
||||
data = json.loads(request.body)
|
||||
code = data.get("code", "").strip().upper()
|
||||
from .models import PaymentCode
|
||||
valid = PaymentCode.objects.filter(code=code, used=False).exists()
|
||||
from .models import DemoCode
|
||||
valid = DemoCode.objects.filter(code=code, used=False).exists()
|
||||
time.sleep(3)
|
||||
return JsonResponse({"valid": valid})
|
||||
except Exception:
|
||||
|
||||
Reference in New Issue
Block a user