fabriquedoc/frontend/app_tab4.py
François Pelletier ac457746f3 feat: Améliorer la robustesse du frontend et corriger les erreurs de type
Corrige plusieurs problèmes dans les onglets du frontend pour améliorer la stabilité et la gestion des données :

frontend/app_tab3.py :

Remplace st.session_state['content'] par st.session_state['markdown'] pour assurer la cohérence de la clé de session.
Ajoute des valeurs par défaut aux appels .get() pour les champs de paramètres (couleur des liens, moteur PDF, taille de police, dimensions du papier, marges, FPS, temps d'arrêt) afin d'éviter les erreurs de type None.
frontend/app_tab4.py :

Améliore la gestion des erreurs lors de la récupération des listes d'images et des images individuelles en vérifiant les codes de statut HTTP.
Ajoute une gestion pour le scénario où aucune image n'est disponible, affichant un message informatif à l'utilisateur.
2025-06-30 21:58:09 -04:00

61 lines
No EOL
2.6 KiB
Python

# Importation des modules nécessaires
import requests # Pour effectuer des requêtes HTTP
import streamlit as st # Pour créer l'interface utilisateur web
# Définition de la fonction principale pour l'onglet 4 de l'application
def app_tab4():
# Affichage d'un en-tête dans l'interface utilisateur
st.header("Images")
# Préparation des en-têtes HTTP pour l'authentification
http_headers = {"Authorization": f"Bearer {st.session_state['bearer_token']}"}
# Section pour afficher les images disponibles
st.write("Images disponibles")
# Récupération de la liste des images depuis le serveur
response = requests.get(f"{st.session_state['fabriquedoc_endpoint']}/images/", headers=http_headers)
images = []
if response.status_code == 200:
images = response.json().get("images", [])
else:
st.error(f"Erreur lors de la récupération des images: {response.status_code} - {response.text}")
if images:
# Création d'un menu déroulant pour sélectionner une image
selected_image = st.selectbox("Choisis une image:", images)
# Récupération et affichage de l'image sélectionnée
image_response = requests.get(f"{st.session_state['fabriquedoc_endpoint']}/images/{selected_image}", headers=http_headers)
if image_response.status_code == 200:
image_data = image_response.content
st.image(image_data)
else:
st.error(f"Erreur lors de la récupération de l'image: {image_response.status_code} - {image_response.text}")
else:
st.info("Aucune image disponible.")
# Section pour envoyer une nouvelle image
st.write("Envoyer une image")
# Création d'un widget pour télécharger des fichiers
uploaded_files = st.file_uploader("Choisis un fichier image",
accept_multiple_files=True)
# Traitement des fichiers téléchargés
if uploaded_files is not None:
for uploaded_file in uploaded_files:
# Préparation de l'URL pour l'envoi de l'image
url = f"{st.session_state['fabriquedoc_endpoint']}/images/"
# Création d'un objet FormData pour l'envoi du fichier
files = {"file": uploaded_file}
# Envoi du fichier au serveur
response = requests.post(url, files=files, headers=http_headers)
# Vérification du statut de la réponse
if response.status_code < 300:
st.write(f"Le fichier {uploaded_file.name} a été envoyé avec succès !")
else:
st.write(f"L'envoi du fichier {uploaded_file.name} a échoué.")