Changeset - fcbacc82e68c
[Not reviewed]
0 3 0
James Polley - 7 years ago 2017-12-26 12:10:21
jp@jamezpolley.com
Add views to allow for PNG rendering of badge
3 files changed with 18 insertions and 7 deletions:
0 comments (0 inline, 0 general)
requirements.txt
Show inline comments
...
 
@@ -34,5 +34,5 @@ django-ical==1.4
 

	
 
# registratoin reqs
 
# registrasion reqs
 
django-nested-admin==2.2.6
 

	
 
CairoSVG==2.1.2
 

	
...
 
@@ -43 +43,2 @@ requests>=2.11.1
 
stripe==1.38.0
 

	
vendor/registrasion/registrasion/urls.py
Show inline comments
...
 
@@ -29,3 +29,5 @@ public = [
 
    url(r"^mybadge$", user_badge, name="user_badge"),
 
    url(r"^mybadge/(png|svg)", 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"^badger/([A-Za-z0-9]+)$", badger, name="badger"),
vendor/registrasion/registrasion/views.py
Show inline comments
...
 
@@ -40,2 +40,3 @@ from lxml import etree
 
from copy import deepcopy
 
from cairosvg import svg2png
 

	
...
 
@@ -1115,9 +1116,9 @@ def _get_badge_template_name():
 
@login_required
 
def user_badge(request):
 
def user_badge(request, format="png"):
 
    '''Shows the logged-in user their badge'''
 

	
 
    return render_badge(request.user)
 
    return render_badge(request.user, format)
 

	
 
@user_passes_test(_staff_only)
 
def badge(request, user_id):
 
def badge(request, user_id, format="svg"):
 
    ''' Renders a single user's badge (SVG). '''
...
 
@@ -1127,10 +1128,17 @@ def badge(request, user_id):
 

	
 
    return render_badge(user)
 
    return render_badge(user, format)
 

	
 
def render_badge(user):
 
def render_badge(user, format="svg"):
 
    rendered = render_badge_svg(user)
 
    if format == "png":
 
        rendered = svg2png(bytestring=svg, dpi=72, scale=3)
 

	
 
    response = HttpResponse(rendered)
 

	
 
    if format == "svg":
 
        response["Content-Type"] = "image/svg+xml;charset=utf-8"
 
        response["Content-Disposition"] = 'inline; filename="badge.svg"'
 
    elif format == "png":
 
        response["Content-Type"] = "image/png"
 
        response["Content-Disposition"] = 'inline; filename="badge.png"'
 
    return response
0 comments (0 inline, 0 general)