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
...
 
@@ -31,13 +31,14 @@ bleach
 
pytz==2015.7
 
django-ical==1.4
 

	
 

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

	
 
CairoSVG==2.1.2
 

	
 
# Registripe
 
django-countries>=4.3
 
pinax-stripe==3.2.1
 
requests>=2.11.1
 
stripe==1.38.0
 

	
vendor/registrasion/registrasion/urls.py
Show inline comments
...
 
@@ -26,9 +26,11 @@ 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"^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"),
 
    url(r"^badger/", badger, name="badger"),
 
    url(r"^category/([0-9]+)$", product_category, name="product_category"),
 
    url(r"^checkout$", checkout, name="checkout"),
vendor/registrasion/registrasion/views.py
Show inline comments
...
 
@@ -37,8 +37,9 @@ from django.shortcuts import render
 
from django.template import Context, Template, loader
 

	
 
from lxml import etree
 
from copy import deepcopy
 
from cairosvg import svg2png
 

	
 
from registrasion.forms import BadgeForm, ticket_selection
 
from registrasion.contrib.badger import (
 
                                         collate,
...
 
@@ -1112,28 +1113,35 @@ def invoice_mailout(request):
 
def _get_badge_template_name():
 
    return os.path.join(settings.PROJECT_ROOT, 'pinaxcon', 'templates',
 
                        settings.BADGER_DEFAULT_SVG)
 
@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). '''
 

	
 
    user_id = int(user_id)
 
    user = User.objects.get(pk=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
 

	
 
def render_badge_svg(user):
 
    ''' Renders a single user's badge as SVG. '''
0 comments (0 inline, 0 general)