Respond to subscription change events so I can stop polling the stripe event list.
This commit is contained in:
parent
27072d4a2d
commit
d95c321e28
2 changed files with 23 additions and 1 deletions
|
@ -8,7 +8,7 @@ from data import model
|
||||||
from auth.auth import process_auth
|
from auth.auth import process_auth
|
||||||
from auth.permissions import ModifyRepositoryPermission
|
from auth.permissions import ModifyRepositoryPermission
|
||||||
from util.invoice import renderInvoiceToHtml
|
from util.invoice import renderInvoiceToHtml
|
||||||
from util.email import send_invoice_email
|
from util.email import send_invoice_email, send_subscription_change
|
||||||
from util.names import parse_repository_name
|
from util.names import parse_repository_name
|
||||||
from util.http import abort
|
from util.http import abort
|
||||||
from endpoints.trigger import BuildTrigger, ValidationRequestException
|
from endpoints.trigger import BuildTrigger, ValidationRequestException
|
||||||
|
@ -41,6 +41,12 @@ def stripe_webhook():
|
||||||
if invoice:
|
if invoice:
|
||||||
invoice_html = renderInvoiceToHtml(invoice, user)
|
invoice_html = renderInvoiceToHtml(invoice, user)
|
||||||
send_invoice_email(user.email, invoice_html)
|
send_invoice_email(user.email, invoice_html)
|
||||||
|
elif event_type.startswith('customer.subscription.'):
|
||||||
|
customer_id = request_data['data']['object']['customer']
|
||||||
|
cust = model.get_user_or_org_by_customer_id(customer_id)
|
||||||
|
cust_email = cust.email if cust is not None else 'unknown@domain.com'
|
||||||
|
quay_username = cust.username if cust is not None else 'unknown'
|
||||||
|
send_subscription_change(event_type, customer_id, cust_email, quay_username)
|
||||||
|
|
||||||
return make_response('Okay')
|
return make_response('Okay')
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,14 @@ not given access. Please disregard this email.<br>
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
SUBSCRIPTION_CHANGE = """
|
||||||
|
Event name: {0}<br>
|
||||||
|
Customer id: <a href="https://manage.stripe.com/customers/{1}">{1}</a><br>
|
||||||
|
Customer email: <a href="mailto:{2}">{2}</a><br>
|
||||||
|
Quay user or org name: {3}<br>
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
def send_change_email(username, email, token):
|
def send_change_email(username, email, token):
|
||||||
msg = Message('Quay.io email change. Please confirm your email.',
|
msg = Message('Quay.io email change. Please confirm your email.',
|
||||||
sender='support@quay.io', # Why do I need this?
|
sender='support@quay.io', # Why do I need this?
|
||||||
|
@ -64,3 +72,11 @@ def send_invoice_email(email, contents):
|
||||||
recipients=[email])
|
recipients=[email])
|
||||||
msg.html = contents
|
msg.html = contents
|
||||||
mail.send(msg)
|
mail.send(msg)
|
||||||
|
|
||||||
|
|
||||||
|
def send_subscription_change(event_name, customer_id, customer_email, quay_username):
|
||||||
|
msg = Message('Quay.io Customer Subscription Change',
|
||||||
|
sender='support@quay.io', # Why do I need this?
|
||||||
|
recipients=['stripe@quay.io'])
|
||||||
|
msg.html = SUBSCRIPTION_CHANGE.format(event_name, customer_id, customer_email, quay_username)
|
||||||
|
mail.send(msg)
|
||||||
|
|
Reference in a new issue