#!/usr/bin/env python3
"""
Install missing Odoo modules for complete HR, Finance, and Approvals setup
"""
import os
import sys
import json
from pathlib import Path
# Add the src directory to Python path
project_root = Path(__file__).parent
src_path = project_root / 'src'
sys.path.insert(0, str(src_path))
from odoo_mcp.odoo_client import OdooClient
def install_missing_modules():
"""Install the missing modules needed for complete setup"""
# Load configuration
config_file = project_root / 'odoo_config.json'
with open(config_file, 'r') as f:
config_data = json.load(f)
print("š¦ Installing missing modules for complete Odoo setup...")
try:
# Create Odoo client
client = OdooClient(
url=config_data['url'],
db=config_data['db'],
username=config_data['username'],
password=config_data['password']
)
# Modules to install
modules_to_install = ['hr_timesheet', 'purchase']
for module_name in modules_to_install:
print(f"\nš§ Installing module: {module_name}")
# Find the module
module_ids = client._execute(
'ir.module.module',
'search',
[('name', '=', module_name), ('state', 'in', ['uninstalled', 'to install'])]
)
if module_ids:
# Install the module
try:
client._execute(
'ir.module.module',
'button_immediate_install',
module_ids
)
print(f"ā
{module_name} installation initiated")
except Exception as e:
print(f"ā Failed to install {module_name}: {e}")
else:
print(f"ā ļø Module {module_name} not found or already installed")
print("\nā
Module installation completed!")
print("š Note: Some modules may require a database restart to complete installation.")
return True
except Exception as e:
print(f"ā Error installing modules: {e}")
return False
if __name__ == "__main__":
success = install_missing_modules()
sys.exit(0 if success else 1)