Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dbc80ad94e | |||
| ec877669d4 | |||
| a41b70d5af | |||
| e41dbe772c | |||
| 5a3770027f | |||
| 5c90b5f350 | |||
| dd229a212f | |||
| 8bcf57ce83 | |||
| 0fea49109a | |||
| 8337f7cbf1 | |||
| 159d409237 | |||
| 1586f9b7e4 | |||
| 0c99f037b5 |
@@ -19,7 +19,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
environment: ${{ github.ref_name }}
|
environment: ${{ github.ref_name }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repositorypu
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Set up SSH key
|
- name: Set up SSH key
|
||||||
@@ -40,4 +40,4 @@ jobs:
|
|||||||
key: ${{ secrets.ARTIFACT_SSH_KEY }}
|
key: ${{ secrets.ARTIFACT_SSH_KEY }}
|
||||||
passphrase: ${{ secrets.SSH_PSWD }}
|
passphrase: ${{ secrets.SSH_PSWD }}
|
||||||
command_timeout: 5m
|
command_timeout: 5m
|
||||||
script: ${{ secrets.APP_PATH }}/deploy.sh
|
script: ${{ secrets.APP_PATH }}/deploy.sh ${{ env.APP_NAME }}
|
||||||
|
|||||||
@@ -24,6 +24,11 @@ gunicorn app:server
|
|||||||
python run.py
|
python run.py
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Déploiement
|
||||||
|
|
||||||
|
- **Production** (branche `main`, [decp.info](https://decp.info)) : déploiement manuel via un déclenchement de la Github Action [Déploiement](https://github.com/ColinMaudry/decp.info/actions/workflows/deploy.yaml).
|
||||||
|
- **Test** (branche `dev`, [test.decp.info](https://test.decp.info)) : déploiement automatique à chaque push sur la branche `dev`, via la même Github Action.
|
||||||
|
|
||||||
## Liens connexes
|
## Liens connexes
|
||||||
|
|
||||||
- [decp-processing](https://github.com/ColinMaudry/decp-processing) (traitement et publication des données)
|
- [decp-processing](https://github.com/ColinMaudry/decp-processing) (traitement et publication des données)
|
||||||
@@ -31,7 +36,12 @@ python run.py
|
|||||||
|
|
||||||
## Notes de version
|
## Notes de version
|
||||||
|
|
||||||
### 2.0.1 (23 septembre 2025)
|
#### 2.0.1 (23 septembre 2025)
|
||||||
|
|
||||||
|
- Bloquage du bouton de téléchargement si trop de lignes (+ 65000) [#38](https://github.com/ColinMaudry/decp.info/issues/38)
|
||||||
|
- Amélioration du script de déploiement (deploy.sh)
|
||||||
|
- Meilleures instructions d'installation et lancement
|
||||||
|
- Coquilles 🐚
|
||||||
|
|
||||||
### 2.0.0 (23 septembre 2025)
|
### 2.0.0 (23 septembre 2025)
|
||||||
|
|
||||||
@@ -39,7 +49,7 @@ python run.py
|
|||||||
- section "À propos" plus développée
|
- section "À propos" plus développée
|
||||||
- correction de bugs dans les filtres de la data table
|
- correction de bugs dans les filtres de la data table
|
||||||
|
|
||||||
### 2.0.0-alpha
|
#### 2.0.0-alpha
|
||||||
|
|
||||||
- Data table fonctionnelle
|
- Data table fonctionnelle
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
#!bin/bash
|
||||||
|
|
||||||
|
# Utilisé principalement avec les Github Actions
|
||||||
|
# cf. .github/workflows/deploy.yaml
|
||||||
|
|
||||||
|
appname = "$1"
|
||||||
|
|
||||||
|
systemctl stop $appname
|
||||||
|
cd /var/www/$appname
|
||||||
|
git pull
|
||||||
|
source .venv/bin/activate
|
||||||
|
pip install .
|
||||||
|
deactivate
|
||||||
|
chown -R $appname:www-data *
|
||||||
|
systemctl start $appname
|
||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "decp.info"
|
name = "decp.info"
|
||||||
description = ""
|
description = ""
|
||||||
version = "2.0.0"
|
version = "2.0.1"
|
||||||
requires-python = ">= 3.10"
|
requires-python = ">= 3.10"
|
||||||
authors = [
|
authors = [
|
||||||
{ name = "Colin Maudry", email = "colin+decp@maudry.com" }
|
{ name = "Colin Maudry", email = "colin+decp@maudry.com" }
|
||||||
|
|||||||
+1
-1
@@ -19,7 +19,7 @@ layout = [
|
|||||||
children=[
|
children=[
|
||||||
html.H2(title),
|
html.H2(title),
|
||||||
dcc.Markdown(
|
dcc.Markdown(
|
||||||
"""Outil d'exploration libre et gratuit des [Données Essentielles de la Commande Publique](), développé par Colin Maudry.
|
"""Outil d'exploration libre et gratuit des données de marchés publics, développé par Colin Maudry.
|
||||||
|
|
||||||
Ce projet vise à démocratiser l'accès aux données des marchés publics et à un outil performant et gratuit. Si vous le trouvez utile
|
Ce projet vise à démocratiser l'accès aux données des marchés publics et à un outil performant et gratuit. Si vous le trouvez utile
|
||||||
j'aimerais beaucoup échanger avec vous pour comprendre vos cas d'usages et vos besoins. Cet outil ne peut rester performant que si je comprends les problèmes qu'il peut aider à résoudre. Ce projet ne peut rester gratuit que grâce au financement du développement de nouvelles fonctionnalités.
|
j'aimerais beaucoup échanger avec vous pour comprendre vos cas d'usages et vos besoins. Cet outil ne peut rester performant que si je comprends les problèmes qu'il peut aider à résoudre. Ce projet ne peut rester gratuit que grâce au financement du développement de nouvelles fonctionnalités.
|
||||||
|
|||||||
+28
-3
@@ -141,7 +141,11 @@ layout = [
|
|||||||
html.Div(
|
html.Div(
|
||||||
[
|
[
|
||||||
html.P("lignes", id="nb_rows"),
|
html.P("lignes", id="nb_rows"),
|
||||||
html.Button("Télécharger au format Excel", id="btn-download-data"),
|
html.Button(
|
||||||
|
"Téléchargement désactivé au-delà de 65 000 lignes",
|
||||||
|
id="btn-download-data",
|
||||||
|
disabled=True,
|
||||||
|
),
|
||||||
dcc.Download(id="download-data"),
|
dcc.Download(id="download-data"),
|
||||||
html.P("Données mises à jour le " + str(update_date)),
|
html.P("Données mises à jour le " + str(update_date)),
|
||||||
],
|
],
|
||||||
@@ -157,6 +161,9 @@ layout = [
|
|||||||
Output("table", "data"),
|
Output("table", "data"),
|
||||||
Output("table", "data_timestamp"),
|
Output("table", "data_timestamp"),
|
||||||
Output("nb_rows", "children"),
|
Output("nb_rows", "children"),
|
||||||
|
Output("btn-download-data", "disabled"),
|
||||||
|
Output("btn-download-data", "children"),
|
||||||
|
Output("btn-download-data", "title"),
|
||||||
Input("table", "page_current"),
|
Input("table", "page_current"),
|
||||||
Input("table", "page_size"),
|
Input("table", "page_size"),
|
||||||
Input("table", "filter_query"),
|
Input("table", "filter_query"),
|
||||||
@@ -215,7 +222,9 @@ def update_table(page_current, page_size, filter_query, sort_by, data_timestamp)
|
|||||||
|
|
||||||
df_filtered = dff.clone()
|
df_filtered = dff.clone()
|
||||||
|
|
||||||
nb_rows = f"{format_number(dff.height)} lignes"
|
height = dff.height
|
||||||
|
|
||||||
|
nb_rows = f"{format_number(height)} lignes"
|
||||||
|
|
||||||
# Pagination des données
|
# Pagination des données
|
||||||
start_row = page_current * page_size
|
start_row = page_current * page_size
|
||||||
@@ -223,7 +232,23 @@ def update_table(page_current, page_size, filter_query, sort_by, data_timestamp)
|
|||||||
dff = dff.slice(start_row, page_size)
|
dff = dff.slice(start_row, page_size)
|
||||||
dicts = dff.to_dicts()
|
dicts = dff.to_dicts()
|
||||||
|
|
||||||
return dicts, data_timestamp + 1, nb_rows
|
if height > 65000:
|
||||||
|
download_disabled = True
|
||||||
|
download_text = "Téléchargement désactivé au-delà de 65 000 lignes"
|
||||||
|
download_title = "Excel ne supporte pas d'avoir plus de 65 000 URLs dans une même feuille de calcul. Contactez-moi pour me présenter votre besoin en téléchargement afin que je puisse adapter la solution."
|
||||||
|
else:
|
||||||
|
download_disabled = False
|
||||||
|
download_text = "Télécharger au format Excel"
|
||||||
|
download_title = ""
|
||||||
|
|
||||||
|
return (
|
||||||
|
dicts,
|
||||||
|
data_timestamp + 1,
|
||||||
|
nb_rows,
|
||||||
|
download_disabled,
|
||||||
|
download_text,
|
||||||
|
download_title,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@callback(
|
@callback(
|
||||||
|
|||||||
Reference in New Issue
Block a user