Add ability to download receipts in PDF form
This commit is contained in:
		
							parent
							
								
									f8ae8ed6cd
								
							
						
					
					
						commit
						4c6012f756
					
				
					 4 changed files with 47 additions and 6 deletions
				
			
		|  | @ -1,15 +1,16 @@ | |||
| import logging | ||||
| import requests | ||||
| import stripe | ||||
| 
 | ||||
| from flask import (abort, redirect, request, url_for, render_template, | ||||
|                    make_response) | ||||
|                    make_response, Response) | ||||
| from flask.ext.login import login_user, UserMixin, login_required | ||||
| from flask.ext.principal import identity_changed, Identity, AnonymousIdentity | ||||
| 
 | ||||
| from data import model | ||||
| from app import app, login_manager, mixpanel | ||||
| from auth.permissions import QuayDeferredPermissionUser | ||||
| 
 | ||||
| from auth.permissions import QuayDeferredPermissionUser, AdministerOrganizationPermission | ||||
| from util.invoice import renderInvoiceToPdf | ||||
| 
 | ||||
| logger = logging.getLogger(__name__) | ||||
| 
 | ||||
|  | @ -102,6 +103,23 @@ def privacy(): | |||
|   return render_template('privacy.html') | ||||
| 
 | ||||
| 
 | ||||
| @app.route('/receipt', methods=['GET']) | ||||
| def receipt(): | ||||
|   id =  request.args.get('id') | ||||
|   if id: | ||||
|     invoice = stripe.Invoice.retrieve(id) | ||||
|     if invoice: | ||||
|       org = model.get_user_or_org_by_customer_id(invoice.customer) | ||||
|       if org and org.organization: | ||||
|         admin_org = AdministerOrganizationPermission(org.username) | ||||
|         if admin_org.can(): | ||||
|           file_data = renderInvoiceToPdf(invoice, org)           | ||||
|           return Response(file_data, | ||||
|                           mimetype="application/pdf", | ||||
|                           headers={"Content-Disposition": | ||||
|                                      "attachment;filename=receipt.pdf"}) | ||||
|   abort(404) | ||||
| 
 | ||||
| def common_login(db_user): | ||||
|   if login_user(_LoginWrappedDBUser(db_user.username, db_user)): | ||||
|     logger.debug('Successfully signed in as: %s' % db_user.username) | ||||
|  |  | |||
		Reference in a new issue