diff --git a/endpoints/webhooks.py b/endpoints/webhooks.py index a68d819c7..b5815bf0d 100644 --- a/endpoints/webhooks.py +++ b/endpoints/webhooks.py @@ -46,7 +46,23 @@ def stripe_webhook(): 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) + + change_type = '' + if event_type.endswith('.deleted'): + plan_id = request_data['data']['object']['plan']['id'] + change_type = 'canceled %s' % plan_id + send_subscription_change(change_type, customer_id, cust_email, quay_username) + elif event_type.endswith('.created'): + plan_id = request_data['data']['object']['plan']['id'] + change_type = 'subscribed %s' % plan_id + send_subscription_change(change_type, customer_id, cust_email, quay_username) + elif event_type.endswith('.updated'): + if 'previous_attributes' in request_data['data']: + if 'plan' in request_data['data']['previous_attributes']: + old_plan = request_data['data']['previous_attributes']['plan']['id'] + new_plan = request_data['data']['object']['plan']['id'] + change_type = 'switched %s -> %s' % (old_plan, new_plan) + send_subscription_change(change_type, customer_id, cust_email, quay_username) return make_response('Okay') diff --git a/util/email.py b/util/email.py index e4e97ebea..14159b325 100644 --- a/util/email.py +++ b/util/email.py @@ -35,12 +35,14 @@ not given access. Please disregard this email.
SUBSCRIPTION_CHANGE = """ -Event name: {0}
+Change: {0}
Customer id: {1}
Customer email: {2}
Quay user or org name: {3}
""" +SUBSCRIPTION_CHANGE_TITLE = 'Subscription Change - {0} {1}' + def send_change_email(username, email, token): msg = Message('Quay.io email change. Please confirm your email.', @@ -74,9 +76,9 @@ def send_invoice_email(email, contents): 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) +def send_subscription_change(change_description, customer_id, customer_email, quay_username): + title = SUBSCRIPTION_CHANGE_TITLE.format(quay_username, change_description) + msg = Message(title, sender='support@quay.io', recipients=['stripe@quay.io']) + msg.html = SUBSCRIPTION_CHANGE.format(change_description, customer_id, customer_email, + quay_username) mail.send(msg)