"""Administrarea componentelor cantarite.""" from __future__ import annotations from flask import Blueprint, flash, redirect, render_template, request, url_for from ..repositories import ( ValidationError, create_component, delete_component, get_component, list_components, update_component, ) bp = Blueprint("components", __name__, url_prefix="/componente") @bp.get("") def index(): return render_template("components/list.html", components=list_components(include_inactive=True)) @bp.route("/nou", methods=["GET", "POST"]) def create(): if request.method == "POST": try: create_component(request.form) flash("Componentul a fost adaugat.", "success") return redirect(url_for("components.index")) except ValidationError as exc: flash(str(exc), "error") return render_template("components/form.html", component=dict(request.form), is_new=True) @bp.route("//editare", methods=["GET", "POST"]) def edit(component_id: int): component = get_component(component_id) if component is None: flash("Componentul nu exista.", "error") return redirect(url_for("components.index")) if request.method == "POST": try: update_component(component_id, request.form) flash("Componentul a fost actualizat.", "success") return redirect(url_for("components.index")) except ValidationError as exc: flash(str(exc), "error") component = {**component, **dict(request.form)} return render_template("components/form.html", component=component, is_new=False) @bp.post("//stergere") def remove(component_id: int): delete_component(component_id) flash("Componentul a fost sters sau dezactivat (daca e folosit intr-o reteta).", "success") return redirect(url_for("components.index"))