feat: Flask routes and Jinja2/HTMX/Tailwind templates

This commit is contained in:
2026-03-11 16:43:15 +01:00
parent b9832f0337
commit 32ea4c3a1a
8 changed files with 513 additions and 5 deletions

View File

@@ -1,3 +1,48 @@
from flask import Blueprint
from flask import Blueprint, render_template, request
from datetime import date
import sqlalchemy as sa
from app import db
from app.models import WorkEntry
from app.business.travel_calc import compute_km_for_entry, compute_co2_grams, compute_frais_reels
from app.config_loader import get_vehicles, get_journeys, get_bareme
bp = Blueprint("reports", __name__)
bp = Blueprint("reports", __name__, url_prefix="/reports")
@bp.route("/")
def index():
year = request.args.get("year", date.today().year, type=int)
start = date(year, 1, 1)
end = date(year, 12, 31)
entries = db.session.scalars(
sa.select(WorkEntry).where(WorkEntry.date.between(start, end))
).all()
vehicles = get_vehicles()
journeys = get_journeys()
total_km = {}
total_co2 = 0.0
for entry in entries:
km = compute_km_for_entry(entry.journey_profile_id, journeys)
for v, d in km.items():
total_km[v] = total_km.get(v, 0) + d
total_co2 += compute_co2_grams(km, vehicles)
frais_reels = {}
for vehicle_id, km in total_km.items():
vehicle = vehicles.get(vehicle_id, {})
cv = vehicle.get("cv")
if cv:
tranches = get_bareme(year, cv)
frais_reels[vehicle_id] = round(compute_frais_reels(km, tranches), 2)
return render_template(
"reports.html",
year=year,
total_km=total_km,
total_co2_kg=round(total_co2 / 1000, 2),
frais_reels=frais_reels,
vehicles=vehicles,
)