mirror of
https://github.com/Ladebeze66/llm_ticket3.git
synced 2025-12-13 17:37:05 +01:00
180 lines
5.8 KiB
Python
180 lines
5.8 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Exemples d'utilisation du module Odoo pour extraire des tickets.
|
|
Ces exemples montrent comment utiliser les fonctions principales depuis un script Python.
|
|
"""
|
|
|
|
import sys
|
|
import os
|
|
import json
|
|
import logging
|
|
from datetime import datetime
|
|
|
|
# Ajouter le répertoire parent au chemin de recherche des modules
|
|
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '../../')))
|
|
|
|
from odoo.auth_manager import AuthManager
|
|
from odoo.ticket_manager import TicketManager
|
|
from odoo.batch_ticket_manager import BatchTicketManager
|
|
from odoo.retrieve_ticket import retrieve_ticket
|
|
from odoo.retrieve_tickets_batch import retrieve_tickets_batch, list_projects, list_stages
|
|
from core.utils import setup_logging
|
|
|
|
def load_config(config_file="config.json"):
|
|
"""Charge le fichier de configuration"""
|
|
try:
|
|
with open(config_file, 'r') as f:
|
|
return json.load(f)
|
|
except Exception as e:
|
|
print(f"Erreur lors du chargement du fichier de configuration: {e}")
|
|
return {}
|
|
|
|
def exemple_extraction_ticket_unique():
|
|
"""Exemple d'extraction d'un ticket unique"""
|
|
print("\n=== Exemple d'extraction d'un ticket unique ===\n")
|
|
|
|
# Code du ticket à extraire
|
|
ticket_code = "TS-1234" # Remplacer par un code de ticket réel
|
|
|
|
# Appel de la fonction d'extraction
|
|
result = retrieve_ticket(
|
|
ticket_code=ticket_code,
|
|
output=None, # Utiliser le répertoire par défaut
|
|
config_file="config.json",
|
|
verbose=True
|
|
)
|
|
|
|
if result:
|
|
print(f"Extraction réussie! Données sauvegardées dans: {result}")
|
|
else:
|
|
print("L'extraction a échoué. Vérifiez les logs pour plus de détails.")
|
|
|
|
def exemple_extraction_par_lot():
|
|
"""Exemple d'extraction d'un lot de tickets par projet"""
|
|
print("\n=== Exemple d'extraction d'un lot de tickets ===\n")
|
|
|
|
# ID du projet (à remplacer par un ID réel)
|
|
project_id = 1
|
|
|
|
# Critères de recherche
|
|
domain = [
|
|
["project_id", "=", project_id],
|
|
["stage_id", "in", [1, 2, 3]] # Tickets dans les étapes 1, 2 ou 3
|
|
]
|
|
|
|
# Appel de la fonction d'extraction par lot
|
|
result = retrieve_tickets_batch(
|
|
domain=domain,
|
|
limit=10,
|
|
offset=0,
|
|
output=None, # Utiliser le répertoire par défaut
|
|
config_file="config.json",
|
|
verbose=True,
|
|
skip_existing=True
|
|
)
|
|
|
|
if result and result.get("status") != "error":
|
|
print(f"Extraction réussie! {result.get('processed')} tickets traités.")
|
|
print(f"Données sauvegardées dans: {result.get('batch_dir')}")
|
|
else:
|
|
print("L'extraction a échoué. Vérifiez les logs pour plus de détails.")
|
|
|
|
def exemple_lister_projets():
|
|
"""Exemple pour lister les projets disponibles"""
|
|
print("\n=== Liste des projets disponibles ===\n")
|
|
|
|
projects = list_projects("config.json")
|
|
|
|
if projects:
|
|
print(f"{len(projects)} projets trouvés:")
|
|
for project in projects:
|
|
print(f" - ID: {project['id']}, Nom: {project['name']}")
|
|
else:
|
|
print("Aucun projet trouvé ou erreur lors de la récupération.")
|
|
|
|
def exemple_lister_etapes():
|
|
"""Exemple pour lister les étapes disponibles"""
|
|
print("\n=== Liste des étapes disponibles ===\n")
|
|
|
|
stages = list_stages("config.json")
|
|
|
|
if stages:
|
|
print(f"{len(stages)} étapes trouvées:")
|
|
for stage in stages:
|
|
print(f" - ID: {stage['id']}, Nom: {stage['name']}")
|
|
else:
|
|
print("Aucune étape trouvée ou erreur lors de la récupération.")
|
|
|
|
def exemple_api_directe():
|
|
"""Exemple d'utilisation directe des classes d'API"""
|
|
print("\n=== Exemple d'utilisation directe de l'API ===\n")
|
|
|
|
config = load_config()
|
|
odoo_config = config.get("odoo", {})
|
|
|
|
if not all([odoo_config.get(k) for k in ["url", "db", "username", "api_key"]]):
|
|
print("Configuration Odoo incomplète.")
|
|
return
|
|
|
|
# Initialiser les gestionnaires
|
|
auth_manager = AuthManager(
|
|
url=odoo_config.get("url"),
|
|
db=odoo_config.get("db"),
|
|
username=odoo_config.get("username"),
|
|
api_key=odoo_config.get("api_key")
|
|
)
|
|
|
|
if not auth_manager.login():
|
|
print("Échec de l'authentification à Odoo.")
|
|
return
|
|
|
|
# Exemple d'utilisation de TicketManager
|
|
ticket_manager = TicketManager(auth_manager)
|
|
|
|
# Rechercher un ticket par son code
|
|
ticket_code = "TS-1234" # Remplacer par un code de ticket réel
|
|
ticket_data = ticket_manager.get_ticket_by_code(ticket_code)
|
|
|
|
if ticket_data:
|
|
print(f"Ticket trouvé: {ticket_data.get('name')}")
|
|
|
|
# Afficher quelques informations
|
|
print(f" - Projet: {ticket_data.get('project_id_name')}")
|
|
print(f" - Statut: {ticket_data.get('stage_id_name')}")
|
|
print(f" - Assigné à: {ticket_data.get('user_id_name')}")
|
|
else:
|
|
print(f"Ticket {ticket_code} non trouvé.")
|
|
|
|
# Exemple d'utilisation de BatchTicketManager
|
|
batch_manager = BatchTicketManager(ticket_manager)
|
|
|
|
# Compter les tickets ouverts
|
|
open_tickets_domain = [["stage_id.name", "ilike", "ouvert"]]
|
|
open_count = batch_manager.get_ticket_count(open_tickets_domain)
|
|
print(f"\nNombre de tickets ouverts: {open_count}")
|
|
|
|
if __name__ == "__main__":
|
|
# Configurer la journalisation
|
|
setup_logging(logging.INFO)
|
|
|
|
# Exécuter les exemples
|
|
print("\n" + "="*60)
|
|
print("EXEMPLES D'UTILISATION DU MODULE ODOO")
|
|
print("="*60)
|
|
|
|
# Lister les projets et étapes
|
|
exemple_lister_projets()
|
|
exemple_lister_etapes()
|
|
|
|
# Extraire un ticket unique
|
|
# exemple_extraction_ticket_unique()
|
|
|
|
# Extraire un lot de tickets
|
|
# exemple_extraction_par_lot()
|
|
|
|
# Utiliser l'API directement
|
|
# exemple_api_directe()
|
|
|
|
print("\n" + "="*60)
|
|
print("FIN DES EXEMPLES")
|
|
print("="*60 + "\n") |