def confirm(action=None): if flask.ext.security.current_user.has_role('admin'): return flask.redirect(flask.url_for('admin.index')) if not flask.ext.security.current_user.is_anonymous(): return flask.redirect(flask.url_for('manage.actions')) if not (flask.session.get('email') or flask.session.get('phone')): return flask.redirect(flask.url_for('.step_one')) if not flask.session.get('actions'): return flask.redirect(flask.url_for('.step_two')) phone = utils.format_phone(flask.session) if action == 'submit': user = None query = models.User.query email = flask.session.get('email', '') if phone: user = query.filter_by(phone=phone) user = user.first() if email and not user: user = query.filter_by(email=email).first() if not user: user = models.User() user.phone = phone user.email = email for action_id in flask.session['actions']: action = models.Action.query.get(action_id) user.actions.append(action) name = flask.session.get('method_name') if name: method = models.Method.query.filter_by(name=name).first() user.method = method utils.add_schedule(user, flask.session) user.secret = pyotp.random_base32() models.db.session.add(user) models.db.session.commit() redirect = 'index' if user.email and user.email_confirmed_at is None: confirmable = flask.ext.security.confirmable token = confirmable.generate_confirmation_token(user) link = flask.url_for('.confirm_signup', token=token, _external=True) msg = flask.ext.security.utils.get_message('CONFIRM_REGISTRATION', email=user.email) flask.flash(*msg) subject = 'Thank You for Signing Up for Love Touches!' flask.ext.security.utils.send_mail(subject, user.email, 'signup', user=user, confirmation_link=link) redirect = 'index' if user.phone and user.phone_confirmed_at is None: utils.send_code(user) flask.session['_user_id'] = user.id redirect = 'confirm_mobile' for key in (x for x in flask.session.keys() if not x.startswith('_')): del flask.session[key] return flask.redirect(flask.url_for(redirect)) actions = [models.Action.query.get(x) for x in flask.session['actions']] return flask.render_template('confirm.html', actions=actions, phone=phone, days_label=_days_label())
def confirm(action=None): if flask_security.current_user.has_role("admin"): return flask.redirect(flask.url_for("admin.index")) if not flask_security.current_user.is_anonymous: return flask.redirect(flask.url_for("manage.actions")) if not (flask.session.get("email") or flask.session.get("phone")): return flask.redirect(flask.url_for(".step_one")) if not flask.session.get("actions"): return flask.redirect(flask.url_for(".step_two")) phone = utils.format_phone(flask.session) if action == "submit": user = None query = models.User.query email = flask.session.get("email", "") if phone: user = query.filter_by(phone=phone) user = user.first() if email and not user: user = query.filter_by(email=email).first() if not user: user = models.User() user.phone = phone user.email = email for action_id in flask.session["actions"]: action = models.Action.query.get(action_id) user.actions.append(action) name = flask.session.get("method_name") if name: method = models.Method.query.filter_by(name=name).first() user.method = method utils.add_schedule(user, flask.session) user.secret = pyotp.random_base32() models.db.session.add(user) models.db.session.commit() redirect = "index" if user.email and user.email_confirmed_at is None: token = flask_security.confirmable.generate_confirmation_token(user) link = flask.url_for(".confirm_signup", token=token, _external=True) msg = flask_security.utils.get_message( "CONFIRM_REGISTRATION", email=user.email ) flask.flash(*msg) subject = "Thank You for Signing Up for Love Touches!" flask_security.utils.send_mail( subject, user.email, "signup", user=user, confirmation_link=link ) redirect = "index" if user.phone and user.phone_confirmed_at is None: utils.send_code(user) flask.session["_user_id"] = user.id redirect = "confirm_mobile" for key in (x for x in list(flask.session.keys()) if not x.startswith("_")): del flask.session[key] return flask.redirect(flask.url_for(redirect)) actions = [models.Action.query.get(x) for x in flask.session["actions"]] return flask.render_template( "confirm.html", actions=actions, phone=phone, days_label=_days_label() )
def schedule(): user = flask_security.current_user form = forms.ScheduleForm() if form.validate_on_submit(): utils.add_schedule(user, form.data) models.db.session.add(user) models.db.session.commit() flask.flash("Schedule saved.", "success") if user.weekdays: hour = user.check_hour form.days_of_week.data = user.weekdays form.hour.data = hour if 1 <= hour <= 12 else abs(hour - 12) form.minute.data = user.check_minute form.am_pm.data = "am" if 1 <= hour <= 12 else "pm" form.timezone.data = user.timezone return flask.render_template("schedule.html", form=form)