Gros refactoring
This commit is contained in:
parent
6008aa68f6
commit
4a6bfc951f
368 changed files with 22503 additions and 3 deletions
82
frontend/app_tab3.py
Normal file
82
frontend/app_tab3.py
Normal file
|
@ -0,0 +1,82 @@
|
|||
# Importation des modules nécessaires
|
||||
import datetime # Pour manipuler les dates et heures
|
||||
import requests # Pour effectuer des requêtes HTTP
|
||||
import streamlit as st # Pour créer l'interface utilisateur web
|
||||
|
||||
# Importation de la classe DocumentSpecs depuis le module models
|
||||
from models import DocumentSpecs
|
||||
|
||||
# Définition de la fonction principale pour l'onglet 3 de l'application
|
||||
def app_tab3():
|
||||
# Affichage d'un en-tête dans l'interface utilisateur
|
||||
st.header("Paramètres")
|
||||
|
||||
# Préparation des en-têtes HTTP pour l'authentification
|
||||
http_headers = {"Authorization": f"Bearer {st.session_state['bearer_token']}"}
|
||||
|
||||
# Récupération et sélection des styles disponibles
|
||||
response_styles = requests.get(f"{st.session_state['fabriquedoc_endpoint']}/styles/", headers=http_headers).json()
|
||||
styles = response_styles.get("styles")
|
||||
selected_style = st.selectbox("Sélectionnez un style:", styles)
|
||||
|
||||
# Récupération et sélection des formats disponibles pour le style choisi
|
||||
response_formats = requests.get(f"{st.session_state['fabriquedoc_endpoint']}/formats/{selected_style}/", headers=http_headers).json()
|
||||
formats = response_formats.get("formats")
|
||||
selected_format = st.selectbox("Sélectionnez un format:", formats)
|
||||
|
||||
# Récupération des paramètres de format pour le style et le format choisis
|
||||
response_format_parameters = requests.get(
|
||||
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)
|
||||
|
||||
# Création d'un bouton pour générer le document
|
||||
if st.button("Générer le document"):
|
||||
# Création d'un objet DocumentSpecs avec les paramètres saisis
|
||||
document_specs = DocumentSpecs(
|
||||
format=selected_format,
|
||||
style=selected_style,
|
||||
linkcolor=linkcolor,
|
||||
pdfengine=pdfengine,
|
||||
content=st.session_state['content'],
|
||||
fontsize=fontsize,
|
||||
paperwidth=paperwidth,
|
||||
paperheight=paperheight,
|
||||
margin=margin,
|
||||
vmargin=vmargin,
|
||||
fps=fps,
|
||||
stilltime=stilltime
|
||||
)
|
||||
|
||||
# Préparation des en-têtes pour la requête POST
|
||||
post_headers = http_headers | {"Content-Type": "application/json"}
|
||||
|
||||
# Envoi de la requête POST pour générer le document
|
||||
response = requests.post(f"{st.session_state['fabriquedoc_endpoint']}/generer/",
|
||||
json=document_specs.model_dump(),
|
||||
headers=post_headers,
|
||||
timeout=(30, 3000)) # 30 secondes de timeout pour la connexion, 5 minutes pour la lecture
|
||||
|
||||
# Vérification du code de statut de la réponse
|
||||
if 200 <= response.status_code <= 299:
|
||||
# Si la requête est réussie, récupération des données du fichier
|
||||
file_data = response.content
|
||||
datef = datetime.datetime.now().strftime("%m-%d-%Y")
|
||||
|
||||
# Création du nom de fichier
|
||||
file_name = f"{document_specs.style}-{document_specs.format}-{datef}-output.zip"
|
||||
|
||||
# Affichage d'un bouton de téléchargement
|
||||
st.download_button('Télécharger', file_data, file_name=file_name)
|
||||
else:
|
||||
# Si la requête échoue, affichage d'un message d'erreur
|
||||
st.error(f"La requête a échoué avec le code d'état {response.status_code}: {response.text}")
|
Loading…
Add table
Add a link
Reference in a new issue