aboutsummaryrefslogtreecommitdiffstats
path: root/src/expense/tracker/cat.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/expense/tracker/cat.py')
-rw-r--r--src/expense/tracker/cat.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/expense/tracker/cat.py b/src/expense/tracker/cat.py
new file mode 100644
index 0000000..50aa02d
--- /dev/null
+++ b/src/expense/tracker/cat.py
@@ -0,0 +1,29 @@
+from flask import (
+ render_template,
+)
+from flask_login import current_user, login_required
+from sqlalchemy import func
+from .blueprint import tracker
+from ..model import Category, Expense
+from .. import db
+
+
+@tracker.route("/cat/<int:id>")
+@login_required
+def cat(id: int) -> str:
+ """
+ The per category view of the the user expense.
+ """
+ category = db.one_or_404(db.select(Category).where(Category.id == id))
+
+ total = db.session.scalars(
+ db.select(func.coalesce(func.sum(Expense.amount), 0)).where(
+ Expense.user == current_user, Expense.category == category
+ )
+ ).all()
+ table = db.session.scalars(
+ db.select(Expense).where(
+ Expense.user == current_user, Expense.category == category
+ )
+ ).all()
+ return render_template("tracker/cat.html", table=table, total=total, category=category)