diff --git a/src/figures.py b/src/figures.py index b89e395..16a36eb 100644 --- a/src/figures.py +++ b/src/figures.py @@ -11,8 +11,10 @@ import plotly.graph_objects as go import polars as pl from dash import dash_table, dcc, html from dash_extensions.javascript import Namespace +from polars.exceptions import ColumnNotFoundError from src.db import schema +from src.utils import logger from src.utils.data import DATA_SCHEMA, DEPARTEMENTS_GEOJSON from src.utils.table import add_links, format_number, setup_table_columns @@ -833,7 +835,11 @@ def get_top_org_table(data, org_type: str, extra_columns: list, filters: bool = lff = lff.cast(pl.String) lff = lff.fill_null("") - dff: pl.DataFrame = lff.collect(engine="streaming") + try: + dff: pl.DataFrame = lff.collect(engine="streaming") + except ColumnNotFoundError: + logger.warning(f"get_top_org_table: column not found. {lff.collect_schema()}") + return html.Div() if dff.height == 0: return html.Div() diff --git a/src/pages/marche.py b/src/pages/marche.py index 3709377..91786d2 100644 --- a/src/pages/marche.py +++ b/src/pages/marche.py @@ -109,7 +109,7 @@ def update_marche_info(marche, titulaires): column_object = DATA_SCHEMA.get(col) column_name = column_object.get("title") if column_object else col - if marche[col]: + if col in marche: if col == "acheteur_nom": value = html.A( href=f"/acheteurs/{marche['acheteur_id']}", diff --git a/src/utils/data.py b/src/utils/data.py index cd54f40..eb9c170 100644 --- a/src/utils/data.py +++ b/src/utils/data.py @@ -12,7 +12,7 @@ from src.utils import logger logging.getLogger("httpx").setLevel("WARNING") -def get_annuaire_data(siret: str) -> dict: +def get_annuaire_data(siret: str) -> dict | None: url = f"https://recherche-entreprises.api.gouv.fr/search?q={siret}" try: response = get(url).raise_for_status() diff --git a/src/utils/seo.py b/src/utils/seo.py index f21439f..e383624 100644 --- a/src/utils/seo.py +++ b/src/utils/seo.py @@ -7,6 +7,8 @@ def make_org_jsonld(org_id, org_type, org_name=None, type_org_id="SIRET") -> dic address = None if type_org_id.lower() == "siret" and len(org_id) == 14: annuaire_data = get_annuaire_data(org_id) + if not annuaire_data: + return {} annuaire_address = annuaire_data["matching_etablissements"][0] code_postal = annuaire_address["code_postal"] commune = annuaire_address["libelle_commune"]