projetcbaollm/odoo_data/odoo_toolkit/odoo_connection.py
2025-03-17 16:31:21 +01:00

66 lines
2.3 KiB
Python

import odoorpc
from config import ODOO_HOST, ODOO_DB, ODOO_USER, ODOO_PASSWORD
class OdooConnection:
"""Gère la connexion à l'instance Odoo"""
def __init__(self):
self.odoo = None
self.connected = False
def connect(self):
"""Établit la connexion à Odoo"""
try:
self.odoo = odoorpc.ODOO(ODOO_HOST, port=443, protocol='jsonrpc+ssl')
print(f"Connexion réussie à {ODOO_HOST}")
print("Bases de données disponibles :", self.odoo.db.list())
self.odoo.login(ODOO_DB, ODOO_USER, ODOO_PASSWORD)
print(f"Authentifié en tant que {ODOO_USER}")
self.connected = True
return True
except odoorpc.error.RPCError as e:
print(f"Erreur RPC Odoo : {e}")
return False
except Exception as e:
print(f"Erreur inattendue : {e}")
return False
def get_odoo_instance(self):
"""Retourne l'instance Odoo connectée"""
if not self.connected:
self.connect()
return self.odoo
def clean_ticket_data(ticket_data):
"""Version simplifiée de la fonction de nettoyage."""
return ticket_data # À remplacer par votre fonction de nettoyage existante
def display_ticket_fields(ticket):
"""Affiche les champs d'un ticket et leurs valeurs."""
print("\n== DÉTAILS DU TICKET ==")
print(f"ID: {ticket['ID du Ticket']}")
print(f"Nom: {ticket['Nom']}")
print(f"Date Limite: {ticket['Date Limite']}")
print("\n== CHAMPS SIMPLES ==")
for field_name, value in ticket['Champs Simples'].items():
print(f"{field_name}: {value}")
print("\n== CHAMPS RELATIONNELS ==")
for field_name, value in ticket['Champs Relationnels'].items():
print(f"{field_name}: {value}")
print("\n== DISCUSSIONS ==")
if ticket['Discussions']:
for i, msg in enumerate(ticket['Discussions'], 1):
print(f"Message {i}:")
print(f" Auteur: {msg['Auteur']}")
print(f" Date: {msg['Date']}")
print(f" Sujet: {msg['Sujet']}")
print(f" Contenu: {msg['Contenu'][:100]}..." if len(msg['Contenu']) > 100 else f" Contenu: {msg['Contenu']}")
print()
else:
print("Aucune discussion trouvée.")