dodati payment kodovi, generisanje kodova, pdf view,promena payment page

This commit is contained in:
2025-06-20 00:56:57 +02:00
parent 44bb4578b1
commit 65b58e3bb9
13 changed files with 221 additions and 36 deletions

View File

@@ -1,8 +1,11 @@
from django.contrib import admin
from .models import Document, DocumentSegment, Organization, Risk, Control, DocumentTemplate, DocumentRiskControl
from .models import Document, DocumentSegment, Organization, Risk, Control, DocumentTemplate, DocumentRiskControl, PaymentCode
from django.urls import reverse
from django.utils.html import format_html
from .utils import generate_payment_code
from django.urls import path
from django.shortcuts import render, redirect
from .forms import GenerateCodesForm
class DocumentSegmentInline(admin.StackedInline):
model = DocumentSegment
@@ -41,6 +44,37 @@ class ControlAdmin(admin.ModelAdmin):
class DocumentRiskControlAdmin(admin.ModelAdmin):
list_display = ('document', 'risk', 'control', 'weight','likelihood')
class PaymentCodeAdmin(admin.ModelAdmin):
list_display = ('code', 'created_at', 'used', 'company', 'used_at')
change_list_template = "admin/paymentcode_changelist.html"
def get_urls(self):
urls = super().get_urls()
custom_urls = [
path('generate-codes/', self.admin_site.admin_view(self.generate_codes_view), name='generate-codes'),
]
return custom_urls + urls
def generate_codes_view(self, request):
if request.method == 'POST':
form = GenerateCodesForm(request.POST)
if form.is_valid():
count = form.cleaned_data['count']
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)
created += 1
break
self.message_user(request, f"{created} codes generated.")
return redirect('..')
else:
form = GenerateCodesForm()
return render(request, 'admin/generate_codes.html', {'form': form})
admin.site.register(Document, DocumentAdmin)
admin.site.register(Organization, OrganizationAdmin)
@@ -48,3 +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)