diff --git a/__pycache__/ticket_manager.cpython-312.pyc b/__pycache__/ticket_manager.cpython-312.pyc index f10243a..2b6e28c 100644 Binary files a/__pycache__/ticket_manager.cpython-312.pyc and b/__pycache__/ticket_manager.cpython-312.pyc differ diff --git a/exported_tickets/ticket_T10929_raw.json b/exported_tickets/ticket_T10929_raw.json new file mode 100644 index 0000000..1ba3ba8 --- /dev/null +++ b/exported_tickets/ticket_T10929_raw.json @@ -0,0 +1,3 @@ +[ + 10908 +] \ No newline at end of file diff --git a/ticket_manager.py b/ticket_manager.py index 4e20b3c..ced554d 100644 --- a/ticket_manager.py +++ b/ticket_manager.py @@ -69,20 +69,22 @@ class TicketManager: print(f"Données brutes du ticket sauvegardées dans : {file_path}") def get_ticket_by_id(self, ticket_id): - """ Récupère les détails d'un ticket par son ID et applique le filtre """ - fields_to_read = self.get_model_fields(self.model_name) #Récupère tous les champs disponibles pour le modèle - excluded_fields = set() # Liste des champs à exlure - + """Récupère les détails d'un ticket par son ID et exclut dynamiquement les champs invalides""" + fields_to_read = self.get_model_fields(self.model_name) # Récupère tous les champs disponibles + excluded_fields = set() # Liste des champs à exclure + while True: try: - #Récupérer les données du ticket avec les champs filtrés - valid_fields = [field for field in fields_to_read if field not in excluded_fields] - ticket_data = self._safe_execute(self.model_name, 'read', [ticket_id], valid_fields) - + # Mise à jour de fields_to_read en supprimant les champs exclus + fields_to_read = [field for field in fields_to_read if field not in excluded_fields] + + # Récupérer les données du ticket avec les champs filtrés + ticket_data = self._safe_execute(self.model_name, 'read', [ticket_id], fields_to_read) + if not ticket_data: print_error(f"Aucun ticket trouvé avec l'ID {ticket_id}") return None - + # Sauvegarde des données brutes pour analyse self.save_raw_ticket_data(ticket_data, f"ticket_{ticket_id}_raw.json") return ticket_data[0] @@ -90,15 +92,16 @@ class TicketManager: except odoorpc.error.RPCError as e: error_message = str(e) print_error(f"Erreur RPC détectée : {error_message}") - - #identifier le champ problématique + + # Identifier le champ problématique invalid_field = self.extract_invalid_field(error_message) if invalid_field: print(f"Exclusion du champ invalide : {invalid_field}") - excluded_fields.add(invalid_field) - else: - print_error(f"Impossible d'identifier le champ problématique. Arrêt de la récupération des données.") - return None + excluded_fields.add(invalid_field) + else: + print_error("Impossible d'identifier le champ problématique.") + return None + def get_ticket_by_code(self, ticket_code): """Récupérer un ticket via son code"""