From 9a1e5bee6325a7580146bf05123e1fed1aa6b47e Mon Sep 17 00:00:00 2001 From: Colin Maudry Date: Wed, 28 Jan 2026 11:57:41 +0100 Subject: [PATCH] =?UTF-8?q?D=C3=A9partements=20sous=20forme=20de=20liste,?= =?UTF-8?q?=20ajout=20des=20titulaires=20par=20d=C3=A9partement=20#66?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app.py | 3 +- src/pages/departement.py | 63 +++++++++++++++++++++++++-------------- src/pages/departements.py | 9 ++++-- 3 files changed, 49 insertions(+), 26 deletions(-) diff --git a/src/app.py b/src/app.py index 61bae1a..8889894 100644 --- a/src/app.py +++ b/src/app.py @@ -135,7 +135,8 @@ navbar = dbc.Navbar( ) ) for page in page_registry.values() - if page["name"] not in ["Acheteur", "Titulaire", "Marché"] + if page["name"] + in ["Recherche", "À propos", "Tableau", "Statistiques"] ], className="ms-auto", navbar=True, diff --git a/src/pages/departement.py b/src/pages/departement.py index 7ac55b3..9822e89 100644 --- a/src/pages/departement.py +++ b/src/pages/departement.py @@ -1,7 +1,7 @@ import polars as pl from dash import Input, Output, callback, dcc, html, register_page -from src.utils import departements, df_acheteurs_departement +from src.utils import departements, df_acheteurs_departement, df_titulaires_departement name = "Département" @@ -37,25 +37,42 @@ layout = html.Div( ) def departement_marches(url): departement = url.split("/")[-1] - acheteurs = [] - df = df_acheteurs_departement.filter( - pl.col("acheteur_departement_code") == departement - ) - for row in df.iter_rows(named=True): - p = html.P( - [ - dcc.Link( - row["acheteur_nom"], - href=url + f"/{row['acheteur_id']}", - title=f"Marchés publics de {row['acheteur_nom']}", - ), - " ", - dcc.Link( - "(page dédiée)", - href=f"/acheteurs/{row['acheteur_id']}", - title=f"Page dédiée aux marchés publics de {row['acheteur_nom']}", - ), - ] - ) - acheteurs.append(p) - return acheteurs + + def make_link_list(org_type) -> list: + link_list = [] + if org_type == "acheteur": + df = df_acheteurs_departement + elif org_type == "titulaire": + df = df_titulaires_departement + else: + raise ValueError + + df = df.filter(pl.col(f"{org_type}_departement_code") == departement) + + for row in df.iter_rows(named=True): + li = html.Li( + [ + dcc.Link( + row[f"{org_type}_nom"], + href=url + f"/{row[f'{org_type}_id']}", + title=f"Marchés publics de {row[f'{org_type}_nom']}", + ), + " ", + dcc.Link( + "(page dédiée)", + href=f"/{org_type}s/{row[f'{org_type}_id']}", + title=f"Page dédiée aux marchés publics de {row[f'{org_type}_nom']}", + ), + ] + ) + link_list.append(li) + return link_list + + content = [ + html.H3("Acheteurs publics du département"), + html.Ul(make_link_list("acheteur")), + html.H3("Titulaires du département"), + html.Ul(make_link_list("titulaire")), + ] + + return content diff --git a/src/pages/departements.py b/src/pages/departements.py index 9b122ca..48c74d5 100644 --- a/src/pages/departements.py +++ b/src/pages/departements.py @@ -14,7 +14,12 @@ register_page( layout = html.Div( [ - html.P(dcc.Link(d["departement"], href=f"/departements/{k}")) - for k, d in departements.items() + html.H3("Départements"), + html.Ul( + [ + html.Li(dcc.Link(d["departement"], href=f"/departements/{k}")) + for k, d in departements.items() + ] + ), ] )