def create_unauthenticated_user(self, db, signup_form):
        # SEND AN EMAIL CONFIRMATION
        self.send_confirmation_email(signup_form.email_addr.data)
        # CREATES A USER AND PUSHES IT INTO DB
        new_user = User()
        new_user.id = len(db.child("users").get().val())
        new_user.email = signup_form.email_addr.data
        new_user.first_name = signup_form.first_name.data
        new_user.last_name = signup_form.last_name.data
        new_user.password = new_user.encrypt(
            signup_form.password.data)  # encrypt the password
        new_user.authenticated = False
        reset_date = datetime.datetime.now() + datetime.timedelta(6 * 365 / 12)
        new_user.password_reset = reset_date.isoformat()
        new_user.credits = 0
        new_user.num_lockouts = 0
        last_lockout = datetime.datetime.now()
        new_user.last_lockout = last_lockout.isoformat()
        new_user.viewable_ta = ""
        new_user.remaining_views = 3

        db.child("users").child(new_user.id).set(json.loads(new_user.toJSON()))
        db.child("users").child(new_user.id).child('viewable_ta').push({
            'name':
            "placeholder",
            'rated':
            False
        })
def load_user(user_id):
    user_data = db.child("users").child(user_id).get()
    if user_data.val() is None:
        return None
    user = User()
    user.id = user_data.val()["id"]
    user.email = user_data.val()["email"]
    return user
def login():
    login_form = LoginForm(request.form)
    if request.method == 'POST' and login_form.validate():
        user = User()
        user.email = login_form.email.data
        user.password = login_form.password.data
        login_result = login_form.login(user)
        if login_result >= 0:
            user.id = login_result
            login_user(user)
            return redirect(url_for('router.search'))
        if login_result == -1:
            flash("Incorrect email or password")
        if login_result == -3:
            return redirect(url_for('router.reset_password'))
    return render_template('index.html',
                           login_form=LoginForm(),
                           signup_form=SignUpForm())