From 5a89f70d4ceb621f053045407c311b2086e7044b Mon Sep 17 00:00:00 2001 From: Colin Maudry Date: Mon, 18 Aug 2025 12:27:53 +0200 Subject: [PATCH] =?UTF-8?q?Am=C3=A9lioration=20de=20l'affichage=20et=20du?= =?UTF-8?q?=20t=C3=A9l=C3=A9chargement=20des=20champs=20source=20et=20sour?= =?UTF-8?q?ceOpenData?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/home.py | 17 +++++++++++++++-- src/utils.py | 18 ++++++++++++++---- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/pages/home.py b/src/pages/home.py index 4edbf8d..c7b4095 100644 --- a/src/pages/home.py +++ b/src/pages/home.py @@ -7,6 +7,7 @@ from dotenv import load_dotenv from src.utils import ( add_annuaire_link, + add_resource_link, booleans_to_strings, format_number, lf, @@ -43,6 +44,9 @@ lf = lf.fill_null("") # Ajout des liens vers l'annuaire lf = add_annuaire_link(lf) +# Ajout des liens open data +lf = add_resource_link(lf) + schema = lf.collect_schema() @@ -220,11 +224,20 @@ def update_table(page_current, page_size, filter_query, sort_by, data_timestamp) State("table", "hidden_columns"), prevent_initial_call=True, ) -def download_data(n_clicks, hidden_columns): +def download_data(n_clicks, hidden_columns: list = None): df_to_download = df_filtered.clone() + print(df_to_download.columns) + + # Rétablissement des colonnes source et sourceOpenData (voir add_resource_link) + df_to_download = df_to_download.with_columns( + pl.col("source").str.extract(r'href="(.*?)"').alias("sourceOpenData"), + pl.col("source").str.extract(r'">(.*?)<').alias("source"), + ) + # Les colonnes masquées sont supprimées - df_to_download = df_to_download.drop(hidden_columns) + if hidden_columns: + df_to_download = df_to_download.drop(hidden_columns) def to_bytes(buffer): df_to_download.write_excel(buffer, worksheet="DECP") diff --git a/src/utils.py b/src/utils.py index 2aee276..ace70c8 100644 --- a/src/utils.py +++ b/src/utils.py @@ -40,8 +40,18 @@ def split_filter_part(filter_part): return [None] * 3 -def add_annuaire_link(dff: pl.LazyFrame): - dff = dff.with_columns( +def add_resource_link(lff: pl.LazyFrame) -> pl.LazyFrame: + lff = lff.with_columns( + ( + '' + pl.col("source") + "" + ).alias("source") + ) + lff = lff.drop("sourceOpenData") + return lff + + +def add_annuaire_link(lff: pl.LazyFrame): + lff = lff.with_columns( pl.when(pl.col("titulaire_typeIdentifiant") == "SIRET") .then( '" ).alias("acheteur_id") ) - return dff + return lff def booleans_to_strings(lff: pl.LazyFrame) -> pl.LazyFrame: