From ac457746f3fc65f29f8f933754c9d1fb04cbbe72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Pelletier?= Date: Mon, 30 Jun 2025 21:58:09 -0400 Subject: [PATCH] =?UTF-8?q?feat:=20Am=C3=A9liorer=20la=20robustesse=20du?= =?UTF-8?q?=20frontend=20et=20corriger=20les=20erreurs=20de=20type?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- frontend/app_tab3.py | 20 ++++++++++---------- frontend/app_tab4.py | 28 +++++++++++++++++++--------- 2 files changed, 29 insertions(+), 19 deletions(-) diff --git a/frontend/app_tab3.py b/frontend/app_tab3.py index 13e5c26..fcdee86 100644 --- a/frontend/app_tab3.py +++ b/frontend/app_tab3.py @@ -29,15 +29,15 @@ def app_tab3(): f"{st.session_state['fabriquedoc_endpoint']}/format_parameters/{selected_style}/{selected_format}/", headers=http_headers).json() # Création des champs de saisie pour les différents paramètres - linkcolor = st.text_input("Couleur des liens:", value=response_format_parameters.get("linkcolor")) - pdfengine = st.text_input("Moteur PDF:", value=response_format_parameters.get("pdfengine")) - fontsize = st.number_input("Taille de la police:", value=int(response_format_parameters.get("fontsize")), step=1) - paperwidth = st.number_input("Largeur du papier:", value=int(response_format_parameters.get("paperwidth")), step=30) - paperheight = st.number_input("Hauteur du papier:", value=int(response_format_parameters.get("paperheight")), step=30) - margin = st.number_input("Marge:", value=int(response_format_parameters.get("margin")), step=10) - vmargin = st.number_input("Marge verticale:", value=int(response_format_parameters.get("vmargin")), step=10) - fps = st.number_input("Images par seconde:", value=int(response_format_parameters.get("fps")), step=1) - stilltime = st.number_input("Temps d'arrêt:", value=int(response_format_parameters.get("stilltime")), step=1) + linkcolor = st.text_input("Couleur des liens:", value=response_format_parameters.get("linkcolor", "")) + pdfengine = st.text_input("Moteur PDF:", value=response_format_parameters.get("pdfengine", "")) + fontsize = st.number_input("Taille de la police:", value=int(response_format_parameters.get("fontsize", 0)), step=1) + paperwidth = st.number_input("Largeur du papier:", value=int(response_format_parameters.get("paperwidth", 0)), step=30) + paperheight = st.number_input("Hauteur du papier:", value=int(response_format_parameters.get("paperheight", 0)), step=30) + margin = st.number_input("Marge:", value=int(response_format_parameters.get("margin", 0)), step=10) + vmargin = st.number_input("Marge verticale:", value=int(response_format_parameters.get("vmargin", 0)), step=10) + fps = st.number_input("Images par seconde:", value=int(response_format_parameters.get("fps", 0)), step=1) + stilltime = st.number_input("Temps d'arrêt:", value=int(response_format_parameters.get("stilltime", 0)), step=1) # Création d'un bouton pour générer le document if st.button("Générer le document"): @@ -47,7 +47,7 @@ def app_tab3(): style=selected_style, linkcolor=linkcolor, pdfengine=pdfengine, - content=st.session_state['content'], + content=st.session_state['markdown'], fontsize=fontsize, paperwidth=paperwidth, paperheight=paperheight, diff --git a/frontend/app_tab4.py b/frontend/app_tab4.py index 4ad6e83..349d025 100644 --- a/frontend/app_tab4.py +++ b/frontend/app_tab4.py @@ -15,15 +15,25 @@ def app_tab4(): # 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 = response.json()["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) - image_data = image_response.content - st.image(image_data) + 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")