From 928f75f5045ce934816103586a44cb959e84a2b3 Mon Sep 17 00:00:00 2001 From: Colin Maudry Date: Mon, 29 Sep 2025 19:32:15 +0200 Subject: [PATCH 1/2] Formulaire de contact avec rate limiting simple #48 --- .template.env | 7 +++++++ README.md | 9 ++++++--- src/app.py | 11 +---------- src/pages/about.py | 10 +--------- 4 files changed, 15 insertions(+), 22 deletions(-) diff --git a/.template.env b/.template.env index c397763..7b600ee 100644 --- a/.template.env +++ b/.template.env @@ -5,3 +5,10 @@ SOURCE_STATS_CSV_PATH="https://www.data.gouv.fr/api/1/datasets/r/8ded94de-3b80-4 # Chemin vers le schéma de données DATA_SCHEMA_PATH=https://www.data.gouv.fr/api/1/datasets/r/9a4144c0-ee44-4dec-bee5-bbef38191d9a + +# Formulaire de contact +SENDER_SERVER_DOMAIN="mail.example.com" # serveur SMTP +LOGIN_PASSWORD="" # mot de passe du serveur +LOGIN_EMAIL="connect@example.fr" # adresse utilisée pour se connecter au serveur SMTP +FROM_EMAIL="colin+contactform@maudry.com" # dresse d'envoi des emails (From) +TO_EMAIL="colin+decp@maudry.com" # adresse de destination des emails (To) diff --git a/README.md b/README.md index e87977d..4428ef8 100644 --- a/README.md +++ b/README.md @@ -38,9 +38,12 @@ python run.py #### 2.1.0 -- Ajout des vues [acheteur](https://decp.info/acheteurs/24350013900189) et [titulaire](https://decp.info/titulaires/51903758414786) ([#28](https://github.com/ColinMaudry/decp.info/issues/28) et [#35](https://github.com/ColinMaudry/decp.info/issues/35)) -- Ajout des balises HTML meta Open Graph et Twitter ([#39](https://github.com/ColinMaudry/decp.info/issues/39)) pour de beaux aperçus de liens -- Variables globales uniquement en lecture +- Ajout des vues [acheteur](https://decp.info/acheteurs/24350013900189) et [titulaire](https://decp.info/titulaires/51903758414786) ([#28](https://github.com/ColinMaudry/decp.info/issues/28) et [#35](https://github.com/ColinMaudry/decp.info/issues/35)) 🔎 +- Ajout des balises HTML meta Open Graph et Twitter ([#39](https://github.com/ColinMaudry/decp.info/issues/39)) pour de beaux aperçus de liens 🖼️ +- Formulaire de contact ([#48](https://github.com/ColinMaudry/decp.info/issues/48)) 📨 +- Nom de colonnes plus_agréables ([#33](https://github.com/ColinMaudry/decp.info/issues/33)) 💅 +- Définition des colonnes quand vous passez votre souris sur les en-têtes ([#33](https://github.com/ColinMaudry/decp.info/issues/33)) 📖 +- Variables globales uniquement en lecture (😁) ##### 2.0.1 (23 septembre 2025) diff --git a/src/app.py b/src/app.py index da958c6..c8ecc2f 100644 --- a/src/app.py +++ b/src/app.py @@ -77,7 +77,7 @@ app.layout = html.Div( page["name"], href=page["relative_path"], className="nav" ) for page in page_registry.values() - if page["name"] not in ["Acheteur", "Fournisseur"] + if page["name"] not in ["Acheteur", "Titulaire"] ] ), ], @@ -86,15 +86,6 @@ app.layout = html.Div( page_container, ] ) -# @callback( -# Output(component_id="table", component_property="data", allow_duplicate=True), -# Input(component_id="search", component_property="value"), -# prevent_initial_call=True, -# ) -# def global_search(text): -# new_df = df -# new_df = new_df.filter(pl.col("objet").str.contains("(?i)" + text)) -# return new_df.to_dicts() if __name__ == "__main__": app.run(debug=True) diff --git a/src/pages/about.py b/src/pages/about.py index b44a7ee..d4b60aa 100644 --- a/src/pages/about.py +++ b/src/pages/about.py @@ -42,7 +42,7 @@ les fonctionnalités actuelles de decp.info. Il est ainsi possible de rajouter dcc.Markdown(""" - via l'achat d'une prestation de service (devis, prestation, facture), vous pouvez financer le développement de [fonctionnalités prévues](https://github.com/ColinMaudry/decp.info/issues), ou d'autres ! - ma société accepte aussi les dons (pas de réduction d'impôt possible) -- envoyez un mail et on discute ! +- [écrivez-moi](/contact) et on discute ! #### Pour explorer le projet @@ -54,14 +54,6 @@ les fonctionnalités actuelles de decp.info. Il est ainsi possible de rajouter - [de decp.info](https://github.com/ColinMaudry/decp.info) - [du traitement des données](https://github.com/ColinMaudry/decp-processing) """), - html.H4("Contact", id="contact"), - dcc.Markdown(""" -- Email : [colin+decp@maudry.com](mailto:colin+decp@maudry.com) -- Bluesky : [@col1m.bsky.social](https://bsky.app/profile/col1m.bsky.social) -- Mastodon : [col1m@mamot.fr](https://mamot.fr/@col1m) -- LinkedIn : [colinmaudry](https://www.linkedin.com/in/colinmaudry/) -- venez discuter de la transparence de la commande publique [sur le forum teamopendata.org](https://teamopendata.org/c/commande-publique/101) -"""), html.H4("Sources de données", id="sources"), get_sources_tables(os.getenv("SOURCE_STATS_CSV_PATH")), html.H4("Mentions légales", id="mentions-legales"), From 819f2e315f702a2ce025e51d559d30fa6cf43a11 Mon Sep 17 00:00:00 2001 From: Colin Maudry Date: Mon, 29 Sep 2025 20:06:04 +0200 Subject: [PATCH 2/2] =?UTF-8?q?Affichage=20du=20num=C3=A9ro=20de=20version?= =?UTF-8?q?=20et=20lien=20vers=20changelog?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + pyproject.toml | 2 +- src/app.py | 21 ++++++++++++++++++++- src/assets/style.css | 30 +++++++++++++++++++++++++----- 4 files changed, 47 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 4428ef8..ee53ae6 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,7 @@ python run.py - Formulaire de contact ([#48](https://github.com/ColinMaudry/decp.info/issues/48)) 📨 - Nom de colonnes plus_agréables ([#33](https://github.com/ColinMaudry/decp.info/issues/33)) 💅 - Définition des colonnes quand vous passez votre souris sur les en-têtes ([#33](https://github.com/ColinMaudry/decp.info/issues/33)) 📖 +- Affichage du numéro de version près du logo et lien vers ici 🤓 - Variables globales uniquement en lecture (😁) ##### 2.0.1 (23 septembre 2025) diff --git a/pyproject.toml b/pyproject.toml index e533afa..9b7f6ff 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "decp.info" description = "" -version = "2.0.1" +version = "2.1.0" requires-python = ">= 3.10" authors = [ { name = "Colin Maudry", email = "colin+decp@maudry.com" } diff --git a/src/app.py b/src/app.py index c8ecc2f..32b659a 100644 --- a/src/app.py +++ b/src/app.py @@ -1,6 +1,7 @@ import logging import dash_bootstrap_components as dbc +import tomllib from dash import Dash, dcc, html, page_container, page_registry from dotenv import load_dotenv from flask import send_from_directory @@ -32,6 +33,11 @@ logging.basicConfig( datefmt="%Y-%m-%d %H:%M:%S", ) +with open("./pyproject.toml", "rb") as f: + pyproject = tomllib.load(f) + version = "v" + pyproject["project"]["version"] + + app.index_string = """ @@ -70,7 +76,20 @@ app.layout = html.Div( [ html.Div( [ - html.H1("decp.info"), + html.Div( + [ + html.A(children=html.H1("decp.info"), href="/"), + html.P( + children=html.A( + version, + href="https://github.com/ColinMaudry/decp.info?tab=readme-ov-file#notes-de-version", + target="_blank", + ), + className="version", + ), + ], + className="logo", + ), html.Div( [ dcc.Link( diff --git a/src/assets/style.css b/src/assets/style.css index 00f20a0..66f426a 100644 --- a/src/assets/style.css +++ b/src/assets/style.css @@ -26,6 +26,31 @@ details > div { padding-top: 24px; } +/* Logo et version */ + +div.logo { + width: 230px; +} + +p.version { + float: left; + margin-top: 21px; + margin-left: 12px; +} + +p.version > a { + text-decoration: none; +} + +div.logo h1 { + float: left; +} + +div.logo > a { + text-decoration: none; + color: black; +} + /* Réduire la taille du texte de la colonne Objet */ td[data-dash-column="objet"] { @@ -133,11 +158,6 @@ a.nav { font-size: 120%; } -.navbar.h1 { - float: left; - width: 50%; -} - h3 { margin: 36px 0 24px 0; }