aboutsummaryrefslogtreecommitdiffstats
path: root/src/expense/tracker/cat.py
blob: 50aa02de0a2c0b565bb3cc3728a64fbd31190f9d (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
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)