示例#1
0
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())
示例#2
0
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()
    )
示例#3
0
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)