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)