mirror of
https://github.com/Ladebeze66/odoo_toolkit.git
synced 2025-12-17 04:57:49 +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):
|
def filter_ticket_data(ticket_data):
|
||||||
"""Filtre les données d'un ticket pour ne garder que les informations essentielles."""
|
"""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 = {
|
filtered_ticket = {
|
||||||
"ID du Ticket": ticket_data["id", "ID non disponible"],
|
"ID du Ticket": ticket_data.get("id", "ID non disponible"),
|
||||||
"Nom": ticket_data["Nom"],
|
"Nom": ticket_data.get("name", "Nom inconnu"),
|
||||||
"Code": ticket_data.get("Code", "N/A"),
|
"Code": ticket_data.get("code", "N/A"),
|
||||||
"Date Limite": ticket_data["Date Limite"],
|
"Date Limite": ticket_data.get("date_deadline", "Non définie"),
|
||||||
"Champs Simples": ticket_data["Champs Simples"], # Conserver tous les champs simples
|
"Projet": {
|
||||||
"Champs Relationnels": ticket_data["Champs Relationnels"], # Conserver tous les champs relationnels
|
"ID": ticket_data.get("project_id", [None, "Projet inconnu"])[0],
|
||||||
"Discussions": [] # Initialiser la liste des discussions
|
"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
|
return filtered_ticket
|
||||||
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
|
|
||||||
|
|||||||
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
|
from odoo_connection import OdooConnection
|
||||||
import os
|
import os
|
||||||
|
import json
|
||||||
from utils import save_json, ensure_export_directory, print_error
|
from utils import save_json, ensure_export_directory, print_error
|
||||||
from config import EXPORT_DIR
|
from config import EXPORT_DIR
|
||||||
from data_filter import filter_ticket_data
|
from data_filter import filter_ticket_data
|
||||||
@ -40,6 +41,13 @@ class TicketManager:
|
|||||||
print_error(f" Erreur inattendue lors de '{method}' sur '{model}': {e}")
|
print_error(f" Erreur inattendue lors de '{method}' sur '{model}': {e}")
|
||||||
return None
|
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):
|
def get_ticket_by_id(self, ticket_id):
|
||||||
""" Récupère les détails d'un ticket par son ID et applique le filtre """
|
""" 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']
|
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}")
|
print_error(f"Aucun ticket trouvé avec l'ID {ticket_id}")
|
||||||
return None
|
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
|
# 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):
|
def get_ticket_by_code(self, ticket_code):
|
||||||
"""Récupérer un ticket via son 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}'.")
|
print_error(f"Aucun ticket trouvé avec le code '{ticket_code}'.")
|
||||||
return None
|
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])
|
return self.get_ticket_by_id(ticket_ids[0])
|
||||||
|
|
||||||
def get_available_projects(self):
|
def get_available_projects(self):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user