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.
This commit is contained in:
François Pelletier 2025-06-30 21:58:09 -04:00
parent 3fdb2b7641
commit ac457746f3
2 changed files with 29 additions and 19 deletions

View file

@ -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,

View file

@ -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")