diff --git a/pinaxcon/templates/registrasion/badge.svg b/pinaxcon/templates/registrasion/badge.svg index de81dbc5..e6205084 100644 --- a/pinaxcon/templates/registrasion/badge.svg +++ b/pinaxcon/templates/registrasion/badge.svg @@ -18,11 +18,15 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;"> + + + + +style="fill:white;stroke:black;stroke-width:12.5px;" /> @@ -1042,18 +1046,18 @@ style="font-family:'Roboto-Regular', 'Roboto';font-size:88.353px;"> +style="font-family:'Roboto-Regular', 'Roboto';font-size:144.577px;" filter="url(#grayscale)"> {{ user.attendee.attendeeprofilebase.attendeeprofile.name }} +style="font-family:'Roboto-Regular', 'Roboto';font-size:96.385px;" filter="url(grayscale)"> {{ user.attendee.attendeeprofilebase.attendeeprofile.company }} - + @@ -1063,7 +1067,7 @@ style="font-family:'Roboto-Regular', 'Roboto';font-size:60.24px;"> +style="font-family:'Roboto-Regular', 'Roboto';font-size:60.24px;" filter="url(#grayscale)"> {{ user.attendee.attendeeprofilebase.attendeeprofile.free_text_2 }} @@ -1072,21 +1076,21 @@ style="font-family:'Roboto-Regular', 'Roboto';font-size:60.24px;"> +style="font-family:'Roboto-Bold', 'Roboto', sans-serif;font-weight:600;font-size:72.288px;"> {{ penguin_dinner_count }} +style="font-family:'Roboto-Bold', 'Roboto', sans-serif;font-weight:600;font-size:72.288px;"> {{ speakers_dinner_count }} +style="font-family:'Roboto-Bold', 'Roboto', sans-serif;font-weight:600;font-size:72.288px;"> {{ pdns_count }} @@ -1379,7 +1383,7 @@ style="fill:white;fill-rule:nonzero;" /> +style="font-family:'Roboto-Bold', 'Roboto', sans-serif;font-weight:600;font-size:40.16px;"> {% if user.attendee.attendeeprofilebase.attendeeprofile.of_legal_age %}18+{% endif %} diff --git a/vendor/registrasion/registrasion/urls.py b/vendor/registrasion/registrasion/urls.py index 44a7854e..88e7f174 100644 --- a/vendor/registrasion/registrasion/urls.py +++ b/vendor/registrasion/registrasion/urls.py @@ -27,9 +27,9 @@ from .views import ( public = [ url(r"^amend/([0-9]+)$", amend_registration, name="amend_registration"), url(r"^mybadge$", user_badge, name="user_badge"), - url(r"^mybadge/(png|svg)", user_badge, name="user_badge"), + url(r"^mybadge\.(png|svg|pdf)", user_badge, name="user_badge"), url(r"^badge/([0-9]+)$", badge, name="badge"), - url(r"^badge/([0-9]+).(png|svg)$", badge, name="badge"), + url(r"^badge/([0-9]+).(png|svg|pdf)$", badge, name="badge"), url(r"^badger/([A-Za-z0-9]+)$", badger, name="badger"), url(r"^badger/", badger, name="badger"), url(r"^category/([0-9]+)$", product_category, name="product_category"), diff --git a/vendor/registrasion/registrasion/views.py b/vendor/registrasion/registrasion/views.py index bcdfd906..1348f3ca 100644 --- a/vendor/registrasion/registrasion/views.py +++ b/vendor/registrasion/registrasion/views.py @@ -38,7 +38,7 @@ from django.template import Context, Template, loader from lxml import etree from copy import deepcopy -from cairosvg import svg2png +from cairosvg import svg2pdf, svg2png from registrasion.forms import BadgeForm, ticket_selection from registrasion.contrib.badger import ( @@ -1114,7 +1114,7 @@ def _get_badge_template_name(): return os.path.join(settings.PROJECT_ROOT, 'pinaxcon', 'templates', settings.BADGER_DEFAULT_SVG) @login_required -def user_badge(request, format="png"): +def user_badge(request, format="svg"): '''Shows the logged-in user their badge''' return render_badge(request.user, format) @@ -1131,7 +1131,9 @@ def badge(request, user_id, format="svg"): def render_badge(user, format="svg"): rendered = render_badge_svg(user) if format == "png": - rendered = svg2png(bytestring=svg, dpi=72, scale=3) + rendered = svg2png(bytestring=rendered, dpi=72, scale=3) + elif format == "pdf": + rendered = svg2pdf(bytestring=rendered, dpi=72, scale=3) response = HttpResponse(rendered) @@ -1141,6 +1143,10 @@ def render_badge(user, format="svg"): elif format == "png": response["Content-Type"] = "image/png" response["Content-Disposition"] = 'inline; filename="badge.png"' + elif format == "pdf": + response["Content-Type"] = "application/pdf" + response["Content-Disposition"] = 'inline; filename="badge.pdf"' + return response def render_badge_svg(user):