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.
61 lines
No EOL
2.6 KiB
Python
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é.") |