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: