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.title("Renommage de fichiers de marchés publics")
st.write("""
Cette application permet de renommer vos fichiers de marchés publics selon une nomenclature standardisée.
""")
# Définition des champs normalisés
TYPES_PROCEDURES = [
"Appel d'offres ouvert",
"Appel d'offres restreint",
"Procédure négociée",
"Procédure adaptée",
"Dialogue compétitif",
"Concours"
]
TYPES_DOCUMENTS = [
"DCE",
"RC (Règlement de Consultation)",
"CCAP (Cahier des Clauses Administratives Particulières)",
"CCTP (Cahier des Clauses Techniques Particulières)",
"AE (Acte d'Engagement)",
"BPU (Bordereau des Prix Unitaires)",
"DQE (Détail Quantitatif Estimatif)",
"Mémoire technique",
"Autre"
]
# Interface utilisateur
col1, col2 = st.columns(2)
with col1:
numero_marche = st.text_input("Numéro du marché", placeholder="Ex: 2023-001")
type_procedure = st.selectbox("Type de procédure", TYPES_PROCEDURES)
objet_marche = st.text_input("Objet du marché", placeholder="Ex: Fourniture de matériel informatique")
with col2:
date_publication = st.date_input("Date de publication")
type_document = st.selectbox("Type de document", TYPES_DOCUMENTS)
numero_lot = st.text_input("Numéro de lot (optionnel)", placeholder="Ex: LOT1")
# Upload de fichier
uploaded_file = st.file_uploader("Choisissez un fichier à renommer", type=['pdf', 'doc', 'docx', 'xls', 'xlsx'])
if uploaded_file is not None:
# Construction du nouveau nom de fichier
elements = []
# Ajout des éléments obligatoires
elements.append(numero_marche)
elements.append(date_publication.strftime("%Y%m%d"))
elements.append(type_procedure.replace(" ", "_"))
# Ajout des éléments optionnels
if numero_lot:
elements.append(f"LOT{numero_lot}")
elements.append(type_document.split(" ")[0]) # Prend uniquement le code (DCE, RC, etc.)
# Création du nom de fichier normalisé
objet_marche_clean = objet_marche.replace(" ", "_").replace("/", "-")[:50] # Limite la longueur
elements.append(objet_marche_clean)
nouveau_nom = "_".join(elements) + os.path.splitext(uploaded_file.name)[1]
# Affichage du résultat
st.success("Fichier chargé avec succès !")
col3, col4 = st.columns(2)
with col3:
st.write("**Nom original :**")
st.write(uploaded_file.name)
with col4:
st.write("**Nouveau nom :**")
st.write(nouveau_nom)
# Bouton de téléchargement avec le nouveau nom
if st.download_button(
label="Télécharger le fichier renommé",
data=uploaded_file,
file_name=nouveau_nom,
mime=uploaded_file.type
):
st.write("Fichier téléchargé avec succès !")
# Aide et informations
with st.expander("Aide et nomenclature"):
st.write("""
### Format du nom de fichier :
NUMERO-MARCHE_DATE_TYPE-PROCEDURE_[LOT]_TYPE-DOCUMENT_OBJET
### Exemple :
2023-001_20230615_Appel_offres_ouvert_LOT1_DCE_Fourniture_materiel_informatique.pdf
### Description des champs :
- **Numéro du marché** : Référence unique du marché
- **Date** : Date de publication au format YYYYMMDD
- **Type de procédure** : Procédure de passation du marché
- **Lot** : Numéro du lot (optionnel)
- **Type de document** : Nature du document (DCE, RC, CCAP, etc.)
- **Objet** : Description courte du marché
""")
Hi! I can help you with any questions about Streamlit and Python. What would you like to know?