Merge branch 'feature/48_contact_form' into dev

This commit is contained in:
Colin Maudry
2025-09-29 20:07:19 +02:00
6 changed files with 62 additions and 29 deletions
+7
View File
@@ -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)
+7 -3
View File
@@ -38,9 +38,13 @@ 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)) 📖
- 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)
+1 -1
View File
@@ -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" }
+21 -11
View File
@@ -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 = """
<!DOCTYPE html>
<html lang="fr">
@@ -70,14 +76,27 @@ 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(
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 +105,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)
+25 -5
View File
@@ -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;
}
+1 -9
View File
@@ -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"),