unqiue hologram code
This commit is contained in:
parent
328c657e0f
commit
ef0779de6a
5 changed files with 70 additions and 12 deletions
|
|
@ -6,6 +6,7 @@ from django.urls import reverse
|
|||
from django.utils import timezone
|
||||
from django.template import Template, Context
|
||||
from django.utils.safestring import mark_safe
|
||||
from django.db import IntegrityError
|
||||
|
||||
from processes.models import ProcessInstance, StepInstance
|
||||
from invoices.models import Invoice
|
||||
|
|
@ -157,15 +158,56 @@ def certificate_print(request, instance_id):
|
|||
if request.method == 'POST':
|
||||
# Save/update hologram code then print
|
||||
code = (request.POST.get('hologram_code') or '').strip()
|
||||
if cert:
|
||||
if code:
|
||||
|
||||
if not code:
|
||||
messages.error(request, 'کد یکتای هولوگرام الزامی است')
|
||||
# Find certificate step to redirect back
|
||||
certificate_step = instance.process.steps.filter(order=9).first()
|
||||
if certificate_step and instance.current_step:
|
||||
return redirect('processes:step_detail', instance_id=instance.id, step_id=certificate_step.id)
|
||||
return redirect('processes:instance_summary', instance_id=instance.id)
|
||||
|
||||
try:
|
||||
if cert:
|
||||
# Check if hologram code is already used by another certificate
|
||||
if CertificateInstance.objects.filter(hologram_code=code).exclude(id=cert.id).exists():
|
||||
messages.error(request, 'این کد هولوگرام قبلاً استفاده شده است. لطفاً کد دیگری وارد کنید')
|
||||
# Find certificate step to redirect back
|
||||
certificate_step = instance.process.steps.filter(order=9).first()
|
||||
if certificate_step and instance.current_step:
|
||||
return redirect('processes:step_detail', instance_id=instance.id, step_id=certificate_step.id)
|
||||
return redirect('processes:instance_summary', instance_id=instance.id)
|
||||
|
||||
cert.hologram_code = code
|
||||
cert.save(update_fields=['hologram_code'])
|
||||
else:
|
||||
template = CertificateTemplate.objects.filter(is_active=True).order_by('-created').first()
|
||||
if template:
|
||||
title, body = _render_template(template, instance)
|
||||
cert = CertificateInstance.objects.create(process_instance=instance, template=template, rendered_title=title, rendered_body=body, hologram_code=code or None)
|
||||
else:
|
||||
# Check if hologram code is already used
|
||||
if CertificateInstance.objects.filter(hologram_code=code).exists():
|
||||
messages.error(request, 'این کد هولوگرام قبلاً استفاده شده است. لطفاً کد دیگری وارد کنید')
|
||||
# Find certificate step to redirect back
|
||||
certificate_step = instance.process.steps.filter(order=9).first()
|
||||
if certificate_step and instance.current_step:
|
||||
return redirect('processes:step_detail', instance_id=instance.id, step_id=certificate_step.id)
|
||||
return redirect('processes:instance_summary', instance_id=instance.id)
|
||||
|
||||
template = CertificateTemplate.objects.filter(is_active=True).order_by('-created').first()
|
||||
if template:
|
||||
title, body = _render_template(template, instance)
|
||||
cert = CertificateInstance.objects.create(
|
||||
process_instance=instance,
|
||||
template=template,
|
||||
rendered_title=title,
|
||||
rendered_body=body,
|
||||
hologram_code=code
|
||||
)
|
||||
except IntegrityError:
|
||||
messages.error(request, 'این کد هولوگرام قبلاً استفاده شده است. لطفاً کد دیگری وارد کنید')
|
||||
# Find certificate step to redirect back
|
||||
certificate_step = instance.process.steps.filter(order=9).first()
|
||||
if certificate_step and instance.current_step:
|
||||
return redirect('processes:step_detail', instance_id=instance.id, step_id=certificate_step.id)
|
||||
return redirect('processes:instance_summary', instance_id=instance.id)
|
||||
|
||||
# proceed to rendering page after saving code
|
||||
return render(request, 'certificates/print.html', {
|
||||
'instance': instance,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue