une application de renommage de fichier de marché public qui se base sur les champs normalisé de marchés publics
To upload files, please first save the app
import streamlit as st
import pandas as pd
from datetime import datetime
import os
st.set_page_config(page_title="Renommeur de fichiers marchés publics", layout="wide")
st.title("Renommeur de fichiers marchés publics")
# Définition des champs normalisés pour les marchés publics
TYPES_MARCHE = [
"Travaux",
"Fournitures",
"Services",
]
PROCEDURES = [
"Appel d'offres ouvert",
"Appel d'offres restreint",
"Procédure négociée",
"Procédure adaptée",
"Dialogue compétitif",
]
# Fonction pour générer le nouveau nom de fichier
def generer_nom_fichier(numero, type_marche, procedure, objet, date):
# Nettoyage et formatage de l'objet (enlever les caractères spéciaux)
objet_clean = "".join(c for c in objet if c.isalnum() or c in [" ", "-", "_"]).strip()
objet_clean = objet_clean.replace(" ", "_")
# Formatage de la date
date_format = date.strftime("%Y%m%d")
# Construction du nom du fichier
nouveau_nom = f"{date_format}-{numero}-{type_marche}-{procedure}-{objet_clean}"
return nouveau_nom
st.markdown("""
## Instructions
1. Remplissez les champs ci-dessous pour le marché public
2. Sélectionnez le fichier à renommer
3. Le nouveau nom sera généré selon la nomenclature standardisée
""")
# Formulaire pour les informations du marché
col1, col2 = st.columns(2)
with col1:
numero_marche = st.text_input("Numéro du marché", key="numero")
type_marche = st.selectbox("Type de marché", TYPES_MARCHE, key="type")
procedure = st.selectbox("Procédure", PROCEDURES, key="procedure")
with col2:
objet_marche = st.text_input("Objet du marché", key="objet")
date_marche = st.date_input("Date du marché", key="date")
# Upload de fichier
uploaded_file = st.file_uploader("Choisissez un fichier à renommer", type=['pdf', 'doc', 'docx', 'xls', 'xlsx'])
if uploaded_file is not None:
# Récupération de l'extension du fichier
file_extension = os.path.splitext(uploaded_file.name)[1]
# Génération du nouveau nom
nouveau_nom = generer_nom_fichier(
numero_marche,
type_marche.lower().replace(" ", "_"),
procedure.lower().replace(" ", "_"),
objet_marche,
date_marche
)
# Ajout de l'extension
nouveau_nom_complet = f"{nouveau_nom}{file_extension}"
# Affichage du résultat
st.success("Fichier traité avec succès !")
st.markdown("### Résultat")
col1, col2 = st.columns(2)
with col1:
st.markdown("**Nom original :**")
st.code(uploaded_file.name)
with col2:
st.markdown("**Nouveau nom :**")
st.code(nouveau_nom_complet)
# Bouton pour télécharger le fichier renommé
st.download_button(
label="Télécharger le fichier renommé",
data=uploaded_file,
file_name=nouveau_nom_complet,
mime=uploaded_file.type
)
# Aide et informations supplémentaires
with st.expander("Voir les règles de nommage"):
st.markdown("""
### Format du nom de fichier
Le nom du fichier sera généré selon le format suivant :
```
DATE-NUMERO-TYPE-PROCEDURE-OBJET.extension
```
- DATE : format YYYYMMDD
- NUMERO : numéro du marché
- TYPE : type de marché (travaux, fournitures, services)
- PROCEDURE : type de procédure
- OBJET : description courte du marché (caractères spéciaux supprimés)
""")
Hi! I can help you with any questions about Streamlit and Python. What would you like to know?