def handle_promo(): """Handle Promo Code.""" data = request.get_json() code = data.get('code') user = data['user'] if data.get('user') else {} user = User.get(user['id']) if user.get('id') is not None else None if code is not None: if code == '123456': return jsonify({ 'must_pay': True, 'six_month': False, 'twenty_five': False }) elif code == 'test25': return jsonify({ 'must_pay': True, 'six_month': False, 'twenty_five': True }) elif user: code = PromoCode.query.filter_by(code=code.lower(), active=True).first() if code: if code.prepaid and (not code.single_use or not code.redeemed): if user.stripe_subscription: stripe.Subscription.delete(user.stripe_subscription) user.activate_promo(code.id) code.redeemed = True code.active = not code.single_use db.session.commit() Activity.redeem_promo(user.id, code.fundraiser_id is not None) return jsonify({ 'must_pay': False, 'six_month': code.six_month, 'twenty_five': code.twenty_five }) elif not code.prepaid and (not code.single_use or (not code.redeemed)): activity = Activity.query.filter_by( user_id=user.id, code=code.code).first() if activity is None: Activity.redeem_promo(user.id, code.code) return jsonify({ 'must_pay': True, 'six_month': code.six_month, 'twenty_five': code.twenty_five }) else: return jsonify( {'error': 'This code has already been redeemed.'}) return jsonify({'error': 'Invalid: Please check your code and try again.'})