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):