acheteur.py : migration vers query_marches et schema depuis src.db (#71)

This commit is contained in:
Colin Maudry
2026-04-16 11:06:35 +02:00
parent 31b68079e0
commit e89311f3ab
+5 -7
View File
@@ -15,6 +15,7 @@ from dash import (
register_page, register_page,
) )
from src.db import query_marches, schema
from src.figures import ( from src.figures import (
DataTable, DataTable,
get_distance_histogram, get_distance_histogram,
@@ -25,7 +26,6 @@ from src.figures import (
) )
from src.utils import ( from src.utils import (
columns, columns,
df,
df_acheteurs, df_acheteurs,
filter_table_data, filter_table_data,
format_number, format_number,
@@ -70,7 +70,7 @@ datatable = html.Div(
sort_action="custom", sort_action="custom",
page_size=10, page_size=10,
hidden_columns=[], hidden_columns=[],
columns=[{"id": col, "name": col} for col in df.columns], columns=[{"id": col, "name": col} for col in schema.names()],
), ),
) )
@@ -300,7 +300,7 @@ def update_acheteur_infos(url):
def update_acheteur_stats(data): def update_acheteur_stats(data):
dff = pl.DataFrame(data, strict=False, infer_schema_length=5000) dff = pl.DataFrame(data, strict=False, infer_schema_length=5000)
if dff.height == 0: if dff.height == 0:
dff = pl.DataFrame(schema=df.collect_schema()) dff = pl.DataFrame(schema=schema)
df_marches = dff.unique("id") df_marches = dff.unique("id")
nb_marches = format_number(df_marches.height) nb_marches = format_number(df_marches.height)
# somme_marches = format_number(int(df_marches.select(pl.sum("montant")).item())) # somme_marches = format_number(int(df_marches.select(pl.sum("montant")).item()))
@@ -328,15 +328,13 @@ def update_acheteur_stats(data):
) )
def get_acheteur_marches_data(url, ach_year: str) -> tuple: def get_acheteur_marches_data(url, ach_year: str) -> tuple:
acheteur_siret = url.split("/")[-1] acheteur_siret = url.split("/")[-1]
lff = df.lazy() lff = query_marches("acheteur_id = ?", (acheteur_siret,)).lazy()
lff = lff.filter(pl.col("acheteur_id") == acheteur_siret)
if ach_year and ach_year != "Toutes les années": if ach_year and ach_year != "Toutes les années":
ach_year: int = int(ach_year) ach_year = int(ach_year)
lff = lff.filter(pl.col("dateNotification").dt.year() == ach_year) lff = lff.filter(pl.col("dateNotification").dt.year() == ach_year)
lff = lff.sort(["dateNotification", "uid"], descending=True, nulls_last=True) lff = lff.sort(["dateNotification", "uid"], descending=True, nulls_last=True)
dff: pl.DataFrame = lff.collect(engine="streaming") dff: pl.DataFrame = lff.collect(engine="streaming")
download_disabled, download_text, download_title = get_button_properties(dff.height) download_disabled, download_text, download_title = get_button_properties(dff.height)
data = dff.to_dicts() data = dff.to_dicts()
return data, download_disabled, download_text, download_title return data, download_disabled, download_text, download_title