From b845e2a8eb5eda63644581782331acbf7d2dc2d1 Mon Sep 17 00:00:00 2001 From: Son NK <> Date: Sun, 12 Apr 2020 19:43:35 +0200 Subject: [PATCH] Handle case where subscription_payment_succeeded arrives BEFORE subscription_created --- server.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/server.py b/server.py index e60d46b2..8df3ad53 100644 --- a/server.py +++ b/server.py @@ -385,12 +385,15 @@ def setup_paddle_callback(app: Flask): LOG.debug("Update subscription %s", subscription_id) sub: Subscription = Subscription.get_by(subscription_id=subscription_id) - sub.event_time = arrow.now() - sub.next_bill_date = arrow.get( - request.form.get("next_bill_date"), "YYYY-MM-DD" - ).date() + # when user subscribes, the "subscription_payment_succeeded" can arrive BEFORE "subscription_created" + # at that time, subscription object does not exist yet + if sub: + sub.event_time = arrow.now() + sub.next_bill_date = arrow.get( + request.form.get("next_bill_date"), "YYYY-MM-DD" + ).date() - db.session.commit() + db.session.commit() elif request.form.get("alert_name") == "subscription_cancelled": subscription_id = request.form.get("subscription_id")