فهرست منبع

fix user re-subscribes

Son NK 5 سال پیش
والد
کامیت
c4b9a81c09
1فایلهای تغییر یافته به همراه24 افزوده شده و 10 حذف شده
  1. 24 10
      server.py

+ 24 - 10
server.py

@@ -285,17 +285,31 @@ def setup_paddle_callback(app: Flask):
             else:
                 plan = PlanEnum.yearly
 
-            Subscription.create(
-                user_id=user.id,
-                cancel_url=request.form.get("cancel_url"),
-                update_url=request.form.get("update_url"),
-                subscription_id=request.form.get("subscription_id"),
-                event_time=arrow.now(),
-                next_bill_date=arrow.get(
+            sub = Subscription.get_by(user_id=user.id)
+
+            if not sub:
+                LOG.d("create a new sub")
+                Subscription.create(
+                    user_id=user.id,
+                    cancel_url=request.form.get("cancel_url"),
+                    update_url=request.form.get("update_url"),
+                    subscription_id=request.form.get("subscription_id"),
+                    event_time=arrow.now(),
+                    next_bill_date=arrow.get(
+                        request.form.get("next_bill_date"), "YYYY-MM-DD"
+                    ).date(),
+                    plan=plan,
+                )
+            else:
+                LOG.d("update existing sub %s", sub)
+                sub.cancel_url = request.form.get("cancel_url")
+                sub.update_url = request.form.get("update_url")
+                sub.subscription_id = request.form.get("subscription_id")
+                sub.event_time = arrow.now()
+                sub.next_bill_date = arrow.get(
                     request.form.get("next_bill_date"), "YYYY-MM-DD"
-                ).date(),
-                plan=plan,
-            )
+                ).date()
+                sub.plan = plan
 
             LOG.debug("User %s upgrades!", user)
             notify_admin(f"User {user.email} upgrades!")