diff --git a/.template.env b/.template.env index 99c78a1..86ff67f 100644 --- a/.template.env +++ b/.template.env @@ -15,3 +15,8 @@ LOGIN_PASSWORD="" # mot de passe du serveur LOGIN_EMAIL="connect@example.fr" # adresse utilisée pour se connecter au serveur SMTP FROM_EMAIL="from@example.com" # adresse d'envoi des emails (From) TO_EMAIL="to@example.com" # adresse de destination des emails (To) + +# Matomo +MATOMO_ID_SITE= +MATOMO_BASE_URL= +MATOMO_TOKEN= diff --git a/src/pages/recherche.py b/src/pages/recherche.py index e74a720..b8b4796 100644 --- a/src/pages/recherche.py +++ b/src/pages/recherche.py @@ -27,6 +27,7 @@ layout = html.Div( id="search", type="text", placeholder="Nom d'acheteur, d'entreprise, SIREN...", + autoFocus=True, ), # html.Div( # className="search_options", diff --git a/src/utils.py b/src/utils.py index 9552df2..6621c64 100644 --- a/src/utils.py +++ b/src/utils.py @@ -1,11 +1,12 @@ import json import logging import os -from time import sleep +import uuid +from time import localtime, sleep import polars as pl import polars.selectors as cs -from httpx import get +from httpx import get, post from polars import Schema from polars.exceptions import ComputeError from unidecode import unidecode @@ -394,6 +395,34 @@ def get_data_schema() -> dict: return new_schema +def track_search(query): + if ( + len(query) >= 4 + and os.getenv("DEVELOPMENT").lower != "true" + and os.getenv("MATOMO_DOMAIN") + ): + if os.getenv("DEVELOPMENT").lower() == "true": + url = "https://test.decp.info" + else: + url = "https://decp.info" + params = { + "idsite": os.getenv("MATOMO_ID_SITE"), + "url": url, + "rec": "1", + "action_name": "front_page_search", + "rand": uuid.uuid4().hex, + "apiv": "1", + "h": localtime().tm_hour, + "m": localtime().tm_min, + "s": localtime().tm_sec, + "search": query, + "token_auth": os.getenv("MATOMO_TOKEN"), + } + post( + url=f"https://{os.getenv('MATOMO_DOMAIN')}/matomo.php", params=params + ).raise_for_status() + + def search_org(dff: pl.DataFrame, query: str, org_type: str) -> pl.DataFrame: """ Search in either 'acheteur' or 'titulaire' DataFrame. @@ -407,6 +436,7 @@ def search_org(dff: pl.DataFrame, query: str, org_type: str) -> pl.DataFrame: return dff.select(pl.lit(False).alias("matches")) sleep(0.2) + track_search(query) # Normalize query normalized_query = unidecode(query.strip()).upper()