aboutsummaryrefslogtreecommitdiffstats
path: root/src/expense/auth/delete.py
blob: aaa74779d6091c4088f7812557e04d5277fb5943 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
from typing import Union
from flask import redirect, url_for, render_template
from flask_login import current_user, login_required, logout_user
from flask_wtf import FlaskForm
from werkzeug import Response
from wtforms import SubmitField

from ..model import User
from .blueprint import auth, db


class DeleteForm(FlaskForm):
    """To Handle Delete the user"""
    submit = SubmitField("Delete")


@auth.route("/delete", methods=["GET", "POST"])
@login_required
def delete() -> Union[str, Response]:
    """
    Delete the user account. Has both GET and POST
    """
    form = DeleteForm()
    if form.validate_on_submit():
        user_id = current_user.id  # type: ignore
        logout_user()
        user = db.session.scalars(db.select(User).where(User.id == user_id)).one()
        db.session.delete(user)
        db.session.commit()
        return redirect(url_for("index"))
    return render_template("auth/delete.html", form=form)