mirror of
https://github.com/Ladebeze66/odoo_toolkit.git
synced 2025-12-15 19:26:55 +01:00
J5-4
This commit is contained in:
parent
ebc199362e
commit
12e34b9a7a
Binary file not shown.
Binary file not shown.
@ -11,29 +11,28 @@ def clean_html(content):
|
||||
|
||||
def filter_ticket_data(ticket_data):
|
||||
"""Filtre les données d'un ticket pour ne garder que les informations essentielles."""
|
||||
# Créer un nouveau dictionnaire pour le ticket filtré
|
||||
|
||||
# Vérifier que ticket_data est bien une liste et extraire le premier élément
|
||||
if isinstance(ticket_data, list) and len(ticket_data) > 0:
|
||||
ticket_data = ticket_data[0]
|
||||
else:
|
||||
return {"Erreur": "Format de ticket invalide"}
|
||||
|
||||
filtered_ticket = {
|
||||
"ID du Ticket": ticket_data["id", "ID non disponible"],
|
||||
"Nom": ticket_data["Nom"],
|
||||
"Code": ticket_data.get("Code", "N/A"),
|
||||
"Date Limite": ticket_data["Date Limite"],
|
||||
"Champs Simples": ticket_data["Champs Simples"], # Conserver tous les champs simples
|
||||
"Champs Relationnels": ticket_data["Champs Relationnels"], # Conserver tous les champs relationnels
|
||||
"Discussions": [] # Initialiser la liste des discussions
|
||||
"ID du Ticket": ticket_data.get("id", "ID non disponible"),
|
||||
"Nom": ticket_data.get("name", "Nom inconnu"),
|
||||
"Code": ticket_data.get("code", "N/A"),
|
||||
"Date Limite": ticket_data.get("date_deadline", "Non définie"),
|
||||
"Projet": {
|
||||
"ID": ticket_data.get("project_id", [None, "Projet inconnu"])[0],
|
||||
"Nom": ticket_data.get("project_id", [None, "Projet inconnu"])[1]
|
||||
},
|
||||
"Étape": {
|
||||
"ID": ticket_data.get("stage_id", [None, "Étape inconnue"])[0],
|
||||
"Nom": ticket_data.get("stage_id", [None, "Étape inconnue"])[1]
|
||||
},
|
||||
"Description": clean_html(ticket_data.get("description", "")),
|
||||
"Discussions": ticket_data.get("message_ids", [])
|
||||
}
|
||||
|
||||
# Nettoyer le champ description dans Champs Simples
|
||||
if "description" in filtered_ticket["Champs Simples"]:
|
||||
filtered_ticket["Champs Simples"]["description"] = clean_html(filtered_ticket["Champs Simples"]["description"])
|
||||
|
||||
# Garder uniquement les discussions nécessaires
|
||||
for msg in ticket_data["Discussions"]:
|
||||
filtered_ticket["Discussions"].append({
|
||||
"ID Message": msg["ID Message"],
|
||||
"Sujet": msg["Sujet"],
|
||||
"Contenu": clean_html(msg["Contenu"]), # Nettoyage du contenu HTML
|
||||
"Auteur": msg["Auteur"],
|
||||
"Date": msg["Date"]
|
||||
})
|
||||
|
||||
return filtered_ticket
|
||||
return filtered_ticket
|
||||
|
||||
31
exported_tickets/ticket_10908_raw.json
Normal file
31
exported_tickets/ticket_10908_raw.json
Normal file
@ -0,0 +1,31 @@
|
||||
[
|
||||
{
|
||||
"id": 10908,
|
||||
"name": "TR: MAJ BRGlab",
|
||||
"code": "T10929",
|
||||
"stage_id": [
|
||||
5,
|
||||
"En attente de résolution"
|
||||
],
|
||||
"project_id": [
|
||||
3,
|
||||
"Demandes"
|
||||
],
|
||||
"date_deadline": false,
|
||||
"description": "<p><br></p>",
|
||||
"message_ids": [
|
||||
227288,
|
||||
225765,
|
||||
225756,
|
||||
225755,
|
||||
225636,
|
||||
225635,
|
||||
225634,
|
||||
225633,
|
||||
225614,
|
||||
225613,
|
||||
225612,
|
||||
225611
|
||||
]
|
||||
}
|
||||
]
|
||||
3
exported_tickets/ticket_T10929_raw.json
Normal file
3
exported_tickets/ticket_T10929_raw.json
Normal file
@ -0,0 +1,3 @@
|
||||
[
|
||||
10908
|
||||
]
|
||||
@ -1,5 +1,6 @@
|
||||
from odoo_connection import OdooConnection
|
||||
import os
|
||||
import json
|
||||
from utils import save_json, ensure_export_directory, print_error
|
||||
from config import EXPORT_DIR
|
||||
from data_filter import filter_ticket_data
|
||||
@ -40,6 +41,13 @@ class TicketManager:
|
||||
print_error(f" Erreur inattendue lors de '{method}' sur '{model}': {e}")
|
||||
return None
|
||||
|
||||
def save_raw_ticket_data(self, ticket_data, filename="raw_ticket_data.json"):
|
||||
"""Sauvegarde les données brutes du ticket dans un fichier JSON"""
|
||||
file_path = os.path.join(EXPORT_DIR, filename)
|
||||
with open(file_path, "w", encoding="utf-8") as f:
|
||||
json.dump(ticket_data, f, indent=4, ensure_ascii=False)
|
||||
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 = ['id', 'name', 'code', 'stage_id', 'project_id', 'date_deadline', 'description', 'message_ids']
|
||||
@ -51,8 +59,10 @@ class TicketManager:
|
||||
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")
|
||||
# Nettoyer et filtrer les données du ticket
|
||||
return filter_ticket_data(ticket_data[0]) # Utilisation de data_filter.py
|
||||
#return filter_ticket_data(ticket_data[0]) # Utilisation de data_filter.py
|
||||
|
||||
def get_ticket_by_code(self, ticket_code):
|
||||
"""Récupérer un ticket via son code"""
|
||||
@ -62,6 +72,9 @@ class TicketManager:
|
||||
print_error(f"Aucun ticket trouvé avec le code '{ticket_code}'.")
|
||||
return None
|
||||
|
||||
# Sauvegarde des données brutes pour analyse
|
||||
self.save_raw_ticket_data(ticket_ids, f"ticket_{ticket_code}_raw.json")
|
||||
|
||||
return self.get_ticket_by_id(ticket_ids[0])
|
||||
|
||||
def get_available_projects(self):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user