diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b19cc4..58525e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +#### 2.4.0 + +- Site à peu près utilisable sur petit écran (smartphone) ([#63](https://github.com/ColinMaudry/decp.info/issues/63)) +- Amélioration du référencement Web (sitemap, titres, descriptions) ([#50](https://github.com/ColinMaudry/decp.info/issues/50)) +- Possibilité dans les champs non-numériques de filtrer le texte selon son début ou sa fin (`text*` et `*text`) + ##### 2.3.1 (16 janvier 2026) - Les champs absents du [schéma](https://www.data.gouv.fr/datasets/donnees-essentielles-de-la-commande-publique-consolidees-format-tabulaire?resource_id=9a4144c0-ee44-4dec-bee5-bbef38191d9a) sont ignorés pour éviter les erreurs diff --git a/src/utils.py b/src/utils.py index 1cb2171..a5eff2d 100644 --- a/src/utils.py +++ b/src/utils.py @@ -308,9 +308,18 @@ def filter_table_data(lff: pl.LazyFrame, filter_query: str) -> pl.LazyFrame: elif operator == "contains": if col_type in ["String", "Date"]: filter_value = filter_value.strip('"') - lff = lff.filter( - pl.col(col_name).str.contains("(?i)" + filter_value) - ) + if filter_value.endswith("*"): + lff = lff.filter( + pl.col(col_name).str.starts_with(filter_value[:-1]) + ) + elif filter_value.startswith("*"): + lff = lff.filter( + pl.col(col_name).str.ends_with(filter_value[1:]) + ) + else: + lff = lff.filter( + pl.col(col_name).str.contains("(?i)" + filter_value) + ) elif col_type.startswith("Int") or col_type.startswith("Float"): lff = lff.filter(pl.col(col_name) == filter_value) else: