def locations_subscribe(language_suffix, location_suffix): save_lang(language_suffix) save_loc(location_suffix) try: form = SubscriptionForm() if form.validate_on_submit(): email = form.email.data if not email: return jsonify({'CODE' : '3', 'TEXT' : gettext('Set email address, please')}) if db.session.query(Subscription).filter_by(email=email).count()>0: return jsonify({'CODE' : '2', 'TEXT' : gettext("You're already subscribed. Thank you!")}) subscriber = Subscription(dt=datetime.datetime.now(), location_id=session['locations'][location_suffix], email=email) db.session.add(subscriber) mc = mailchimp.Mailchimp(app.config['MAILCHIMP_TOKEN']) mc.lists.subscribe(app.config['MAILCHIMP_SUBSCRIPTION_LIST_ID'], {'email': email, 'double_optin' : false, 'send_welcome' : true}) db.session.commit() return jsonify({ 'CODE' : '0', 'TEXT' : gettext("Great! You're sucessfully subscribed.") }) else: return jsonify({'CODE' : '4', 'TEXT' : gettext("Incorrect format of the Email")}) except mailchimp.ListAlreadySubscribedError: return jsonify({'CODE' : '2', 'TEXT' : gettext("You're already subscribed. Thank you!")}) except mailchimp.Error, e: return jsonify({'CODE' : '1', 'TEXT' : gettext("An error occured. Please repeat.")})
def do_save_subscription(account_id, subscription_id): account = Account.get_by_id(account_id) subscription = Subscription.get_by_id(subscription_id) form = SubscriptionForm(request.form) form.populate_obj(subscription) if form.validate_on_submit(): subscription.save() return redirect( url_for("app_blueprint.show_account", account_id=account.id)) return render_template("subscription.html", form=form, account=account, subscription=subscription), 400
def do_create_subscription(account_id): form = SubscriptionForm(request.form) # All subscriptions are active when created. form.status.data = SubscriptionStatuses.active account = Account.get_by_id(account_id) subscription = Subscription() form.populate_obj(subscription) if form.validate_on_submit(): subscription.add_to_mailing_list() subscription.save() return redirect( url_for("app_blueprint.show_account", account_id=account.id)) return render_template("subscription.html", account=account, form=form), 400