diff --git a/pinaxcon/templates/registrasion/review.html b/pinaxcon/templates/registrasion/review.html index 5ac54ea1fcde018ade3bde515c416db497f1032c..fa7ed75e035fe5219c10cef3bf7baa1fa1368d10 100644 --- a/pinaxcon/templates/registrasion/review.html +++ b/pinaxcon/templates/registrasion/review.html @@ -36,6 +36,8 @@ you check out:

{% include "registrasion/_items_list.html" with items=pending %} + {% endif %} +

Previously purchased

{% items_purchased as purchased %} {% if purchased %}

You've already paid for the following items:

@@ -70,6 +72,7 @@

What next?

+ {% if pending %}

You can either check out an invoice and pay for your selections, or return to the dashboard.

@@ -77,6 +80,7 @@ Check out and pay + Return to dashboard diff --git a/vendor/regidesk/regidesk/views.py b/vendor/regidesk/regidesk/views.py index e6296464497d2d230960abf3c692f05e4621b277..abd4668c8afeee0ab7ee88a1e486592b85c43caf 100644 --- a/vendor/regidesk/regidesk/views.py +++ b/vendor/regidesk/regidesk/views.py @@ -41,8 +41,14 @@ def boardingpass(request): user=request.user checkin = CheckIn.objects.get_or_create(user=user)[0] if not checkin.boardingpass: - messages.add_message(request, messages.WARNING, 'Your boarding pass has not been prepared. Please try again later.') - return redirect('/') + templates = BoardingPassTemplate.objects.all() + if not templates: + messages.add_message(request, messages.WARNING, + 'Your boarding pass has not been prepared and I can\'t find a ' + 'default template to use. This page has similar information to ' + 'the boarding pass - please check back later.') + return redirect('/tickets/review') + prepare_boarding_pass(request, templates[0]) boardingpass = checkin.boardingpass.html_body qrcode_url = request.build_absolute_uri(reverse("regidesk:checkin_png", args=[checkin.code])) @@ -170,6 +176,49 @@ def boarding_prepare(request): return response +def prepare_boarding_pass(request, template, attendee=None): + + if attendee: + user = attendee.user + else: + user = request.user + attendee=user.attendee + checkin = CheckIn.objects.get_or_create(user=user) + ctx = { + "user": user, + "checkin": user.checkin, + "code": user.checkin.code, + "qrcode": user.checkin.qrcode, + "qrcode_url": request.build_absolute_uri( + reverse("regidesk:checkin_png", args=[user.checkin.code])), + } + ctx = Context(ctx) + ctx["invoices"] = invoices(ctx) + ctx["items_pending"] = items_pending(ctx) + ctx["items_purchased"] = items_purchased(ctx) + ctx["missing_categories"] = missing_categories(ctx) + + subject = Template(template.subject).render(ctx) + body = Template(template.body).render(ctx) + if template.html_body: + html_body = Template(template.html_body).render(ctx) + else: + html_body = None + + bpass = BoardingPass(template=template, to_address=user.email, + from_address=template.from_address, + subject=subject, body=body, + html_body=html_body + ) + bpass.save() + + if user.checkin.boardingpass: + user.checkin.boardingpass.delete() + user.checkin.boardingpass = bpass + user.checkin.save() + + return body, html_body + @permission_required("regidesk.send_boarding_pass") def boarding_send(request): @@ -190,40 +239,7 @@ def boarding_send(request): for attendee in attendees: - user = attendee.user - checkin = CheckIn.objects.get_or_create(user=user) - ctx = { - "user": user, - "checkin": user.checkin, - "code": user.checkin.code, - "qrcode": user.checkin.qrcode, - "qrcode_url": request.build_absolute_uri( - reverse("regidesk:checkin_png", args=[user.checkin.code])), - } - ctx = Context(ctx) - ctx["invoices"] = invoices(ctx) - ctx["items_pending"] = items_pending(ctx) - ctx["items_purchased"] = items_purchased(ctx) - ctx["missing_categories"] = missing_categories(ctx) - - subject = Template(template.subject).render(ctx) - body = Template(template.body).render(ctx) - if template.html_body: - html_body = Template(template.html_body).render(ctx) - else: - html_body = None - - bpass = BoardingPass(template=template, to_address=user.email, - from_address=template.from_address, - subject=subject, body=body, - html_body=html_body - ) - bpass.save() - - if user.checkin.boardingpass: - user.checkin.boardingpass.delete() - user.checkin.boardingpass = bpass - user.checkin.save() + body, html_body = prepare_boarding_pass(attendee, template) msg = EmailMultiAlternatives( bpass.subject, @@ -233,8 +249,8 @@ def boarding_send(request): ) msg.content_subtype="plain" msg.mixed_subtype="related" - if bpass.html_body: - msg.attach_alternative(bpass.html_body, "text/html") + if html_body: + msg.attach_alternative(html_body, "text/html") msg.attach(filename="qrcode.png", content=user.checkin.qrcode, mimetype="image/png")