From 3c9d4a79f8f8fd06c0c77a34a78ae0daf0c555b2 Mon Sep 17 00:00:00 2001 From: Marc Pervaz Boocha Date: Sun, 30 Jul 2023 15:24:43 +0530 Subject: Initial Commit Signed-off-by: Marc Pervaz Boocha --- src/expense/tracker/category.py | 43 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/expense/tracker/category.py (limited to 'src/expense/tracker/category.py') diff --git a/src/expense/tracker/category.py b/src/expense/tracker/category.py new file mode 100644 index 0000000..a36f737 --- /dev/null +++ b/src/expense/tracker/category.py @@ -0,0 +1,43 @@ +from typing import Union +from flask import ( + redirect, + render_template, + url_for, +) +from flask_login import login_required, current_user +from werkzeug import Response + +from .. import db + +from flask_wtf import FlaskForm +from wtforms import StringField, SubmitField +from wtforms.validators import InputRequired + +from ..model import Category +from .blueprint import tracker + + +class CategoryForm(FlaskForm): + """Add Category""" + category = StringField("Add Category", validators=[InputRequired()]) # type: ignore + submit = SubmitField() + + +@tracker.route("/category", methods=["GET", "POST"]) +@login_required +def category() -> Union[str, Response]: + """ + To manage the list of user defined capabilities + """ + form = CategoryForm() + if form.validate_on_submit(): + category = form.category.data + cat = db.session.scalars( + db.select(Category).where(Category.name == category) + ).one_or_none() + if cat is None: + cat = Category(name=category) + current_user.categories.append(cat) # type: ignore + db.session.commit() + return redirect(url_for("index")) + return render_template("tracker/category.html", form=form) -- cgit v1.2.3-70-g09d2