import sys import os import xmlrpc.client # ---------------------- # KONFIGURATION AUS UMGEBUNG # ---------------------- url = os.getenv("ODOO_URL", "http://localhost:8069") db = os.getenv("DB_NAME", "hobbyhimmel") username = os.getenv("ODOO_ADMIN") password = os.getenv("ODOO_ADMIN_PASSWORD") # ---------------------- # PRÜFUNG DER KONFIGURATION # ---------------------- if not all([url, db, username, password]): print("❌ Fehler: ODOO_URL, ODOO_DB, ODOO_USERNAME und ODOO_PASSWORD müssen als Umgebungsvariablen gesetzt sein.") sys.exit(1) # ---------------------- # PARAMETER PRÜFEN # ---------------------- if len(sys.argv) != 2: print("❌ Fehler: Modulname muss als Parameter übergeben werden.") print("👉 Beispiel: python3 uninstall_rpc.py vvow_einweisungen") sys.exit(1) module_name = sys.argv[1] # ---------------------- # AUTHENTIFIZIERUNG # ---------------------- common = xmlrpc.client.ServerProxy(f"{url}/xmlrpc/2/common") uid = common.authenticate(db, username, password, {}) if not uid: print("❌ Anmeldung fehlgeschlagen. Bitte Zugangsdaten prüfen.") sys.exit(1) # ---------------------- # MODUL SUCHEN & DEINSTALLIEREN # ---------------------- models = xmlrpc.client.ServerProxy(f"{url}/xmlrpc/2/object") ids = models.execute_kw(db, uid, password, 'ir.module.module', 'search', [[['name', '=', module_name], ['state', '=', 'installed']]], {'limit': 1} ) if ids: print(f"📦 Deinstalliere Modul: {module_name}") models.execute_kw(db, uid, password, 'ir.module.module', 'button_immediate_uninstall', [ids] ) print("✅ Deinstallation abgeschlossen.") else: print(f"ℹ️ Modul '{module_name}' ist nicht installiert oder nicht vorhanden.")