Add views to allow for PNG rendering of badge
This commit is contained in:
		
							parent
							
								
									469e6f1ad9
								
							
						
					
					
						commit
						fcbacc82e6
					
				
					 3 changed files with 20 additions and 9 deletions
				
			
		|  | @ -32,12 +32,13 @@ 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 | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										2
									
								
								vendor/registrasion/registrasion/urls.py
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/registrasion/registrasion/urls.py
									
										
									
									
										vendored
									
									
								
							|  | @ -27,7 +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"^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"), | ||||
|  |  | |||
							
								
								
									
										22
									
								
								vendor/registrasion/registrasion/views.py
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								vendor/registrasion/registrasion/views.py
									
										
									
									
										vendored
									
									
								
							|  | @ -38,6 +38,7 @@ 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 ( | ||||
|  | @ -1113,26 +1114,33 @@ 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) | ||||
| 
 | ||||
|     response["Content-Type"] = "image/svg+xml;charset=utf-8" | ||||
|     response["Content-Disposition"] = 'inline; filename="badge.svg"' | ||||
|     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): | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 James Polley
						James Polley