cron.py 979 B

12345678910111213141516171819202122232425262728293031323334353637
  1. import arrow
  2. import stripe
  3. from app.extensions import db
  4. from app.log import LOG
  5. from app.models import User, PlanEnum
  6. from server import create_app
  7. def downgrade_expired_plan():
  8. """set user plan to free when plan is expired, ie plan_expiration < now
  9. """
  10. for user in User.query.filter(
  11. User.plan != PlanEnum.free, User.plan_expiration < arrow.now()
  12. ).all():
  13. LOG.d("set user %s to free plan", user)
  14. user.plan_expiration = None
  15. user.plan = PlanEnum.free
  16. if user.stripe_customer_id:
  17. LOG.d("delete user %s on stripe", user.stripe_customer_id)
  18. stripe.Customer.delete(user.stripe_customer_id)
  19. user.stripe_card_token = None
  20. user.stripe_customer_id = None
  21. user.stripe_subscription_id = None
  22. db.session.commit()
  23. if __name__ == "__main__":
  24. LOG.d("Start running cronjob")
  25. app = create_app()
  26. with app.app_context():
  27. downgrade_expired_plan()