mirror of
https://github.com/Ladebeze66/odoo_toolkit.git
synced 2025-12-13 12:36:52 +01:00
130 lines
5.5 KiB
Python
130 lines
5.5 KiB
Python
from ticket_manager import TicketManager
|
|
from utils import get_user_choice
|
|
|
|
# Initialisation de l'objet
|
|
ticket_manager = TicketManager()
|
|
|
|
def handle_list_models():
|
|
"""Gère l'affichage de la liste des modèles"""
|
|
ticket_manager.list_models()
|
|
|
|
|
|
def handle_list_model_fields():
|
|
"""Gère l'affichage des champs d'un modèle"""
|
|
model_name = input("\nEntrez le nom du modèle: ")
|
|
if not model_name:
|
|
print("Aucun nom de modèle fourni.")
|
|
return
|
|
ticket_manager.list_model_fields(model_name)
|
|
|
|
|
|
def handle_export_model_fields_to_json():
|
|
"""Gère l'exportation des informations des champs d'un modèle en JSON"""
|
|
model_name = input("\nEntrez le nom du modèle: ")
|
|
if not model_name:
|
|
print("Aucun nom de modèle fourni.")
|
|
return
|
|
filename = input("Entrez le nom du fichier pour l'exportation: ")
|
|
if not filename:
|
|
print("Aucun nom de fichier fourni.")
|
|
return
|
|
ticket_manager.export_model_fields_to_json(model_name, filename)
|
|
|
|
|
|
def handle_project_tickets_by_stage():
|
|
"""Gère l'exportation des tickets d'un projet par étape"""
|
|
# Récupérer la liste des projets disponibles
|
|
projects = ticket_manager.get_available_projects()
|
|
if not projects:
|
|
print("Aucun projet disponible. Impossible de continuer.")
|
|
return
|
|
|
|
# Demander à l'utilisateur de choisir un projet
|
|
project_id_input = input("\nEntrez l'ID du projet (ou 'q' pour quitter): ")
|
|
if project_id_input.lower() == 'q':
|
|
return
|
|
|
|
try:
|
|
project_id = int(project_id_input)
|
|
if project_id not in projects:
|
|
print(f"Aucun projet trouvé avec l'ID: {project_id}")
|
|
return
|
|
except ValueError:
|
|
print("L'ID du projet doit être un nombre entier.")
|
|
return
|
|
|
|
# Récupérer les étapes (stage_id) du projet
|
|
print(f"\nRécupération des étapes du projet: {projects[project_id]} (ID: {project_id})")
|
|
stages = ticket_manager.get_project_stages(project_id)
|
|
|
|
if not stages:
|
|
print("Aucune étape trouvée pour ce projet. Impossible de continuer.")
|
|
return
|
|
|
|
# Afficher les étapes disponibles
|
|
print("\nÉtapes disponibles:")
|
|
for stage_id, stage_name in stages.items():
|
|
print(f"ID: {stage_id} - {stage_name}")
|
|
|
|
# Demander à l'utilisateur s'il veut sélectionner ou exclure des étapes
|
|
selection_mode = input("\nSouhaitez-vous:\n1. Exporter toutes les étapes\n2. Sélectionner des étapes spécifiques par ID\n3. Exclure certaines étapes par ID\nVotre choix (1/2/3): ")
|
|
|
|
selected_stage_ids = None
|
|
|
|
if selection_mode == '2':
|
|
# Sélectionner des étapes spécifiques par ID
|
|
stage_id_input = input("Entrez les IDs des étapes à inclure (séparés par des virgules): ")
|
|
try:
|
|
selected_stage_ids = [int(x.strip()) for x in stage_id_input.split(',') if x.strip()]
|
|
# Vérifier que les IDs existent dans les étapes disponibles
|
|
valid_ids = [stage_id for stage_id in selected_stage_ids if stage_id in stages]
|
|
invalid_ids = [stage_id for stage_id in selected_stage_ids if stage_id not in stages]
|
|
|
|
selected_stage_ids = valid_ids
|
|
|
|
if invalid_ids:
|
|
print(f"Attention: Les IDs suivants ne sont pas valides et seront ignorés: {', '.join(map(str, invalid_ids))}")
|
|
|
|
if not selected_stage_ids:
|
|
print("Aucun ID d'étape valide sélectionné. Exportation annulée.")
|
|
return
|
|
|
|
print(f"Étapes sélectionnées: {', '.join([f'{stages[stage_id]} (ID: {stage_id})' for stage_id in selected_stage_ids])}")
|
|
except ValueError:
|
|
print("Erreur dans la sélection des étapes. Format attendu: 1,2,3,...")
|
|
return
|
|
|
|
elif selection_mode == '3':
|
|
# Exclure certaines étapes par ID
|
|
stage_id_input = input("Entrez les IDs des étapes à exclure (séparés par des virgules): ")
|
|
try:
|
|
excluded_stage_ids = [int(x.strip()) for x in stage_id_input.split(',') if x.strip()]
|
|
# Vérifier que les IDs existent dans les étapes disponibles
|
|
valid_excluded_ids = [stage_id for stage_id in excluded_stage_ids if stage_id in stages]
|
|
invalid_ids = [stage_id for stage_id in excluded_stage_ids if stage_id not in stages]
|
|
|
|
excluded_stage_ids = valid_excluded_ids
|
|
|
|
if invalid_ids:
|
|
print(f"Attention: Les IDs suivants ne sont pas valides et seront ignorés: {', '.join(map(str, invalid_ids))}")
|
|
|
|
# Sélectionner toutes les étapes sauf les exclues
|
|
selected_stage_ids = [stage_id for stage_id in stages.keys() if stage_id not in excluded_stage_ids]
|
|
|
|
if not selected_stage_ids:
|
|
print("Toutes les étapes ont été exclues. Exportation annulée.")
|
|
return
|
|
|
|
print(f"Étapes sélectionnées: {', '.join([f'{stages[stage_id]} (ID: {stage_id})' for stage_id in selected_stage_ids])}")
|
|
except ValueError:
|
|
print("Erreur dans la sélection des étapes. Format attendu: 1,2,3,...")
|
|
return
|
|
|
|
# Confirmer l'action
|
|
confirmation = input(f"\nVoulez-vous exporter les tickets du projet {projects[project_id]}? (o/n): ")
|
|
if confirmation.lower() != 'o':
|
|
print("Exportation annulée.")
|
|
return
|
|
|
|
# Exporter les tickets
|
|
ticket_manager.export_tickets_by_project_and_stage(project_id, selected_stage_ids) |