def update(self, user=None, coupon=None, plan=None): """ Update an existing subscription. :param user: User to apply the subscription to :type user: User instance :param coupon: Coupon code to apply :type coupon: str :param plan: Plan identifier :type plan: str :return: bool """ PaymentSubscription.update(user.payment_id, coupon, plan) user.previous_plan = user.subscription.plan user.subscription.plan = plan user.coins = add_subscription_coins( user.coins, Subscription.get_plan_by_id(user.previous_plan), Subscription.get_plan_by_id(plan), user.cancelled_subscription_on) if coupon: user.subscription.coupon = coupon coupon = Coupon.query.filter(Coupon.code == coupon).first() if coupon: coupon.redeem() db.session.add(user.subscription) db.session.commit() return True
def update(self, user=None, plan=None, coupon=None): """Updating an existing subscription plan""" PaymentSubscription.update(customer_id=user.payment_id, coupon=coupon, plan=plan) user.subscription.plan = plan if coupon: user.subscription.coupon = coupon coupon = Coupon.query.filter(Coupon.coupon == coupon).first() if coupon: coupon.redeem() db.session.add(user.subscription) db.session.commit() return True