Skip to main content

Odoo Module (Un)Install Tool

Version Python License Status

A powerful command-line tool for managing Odoo modules across multiple server instances.

Features

  • Install, uninstall, and update Odoo modules
  • Export installed modules to YAML configuration files
  • Process multiple Odoo servers in a single operation
  • Secure password management with keyring support
  • Dependencies analysis to prevent breaking installations
  • Parallel processing for faster operations
  • Detailed status reporting
  • Colorful and informative console output
  • Comprehensive logging system

Installation

Requirements:

  • Python (>= 3.8)
  • OdooRPC (>= 0.10.1)
  • PyYaml (>= 6.0.2)
  • python-dotenv (>= 1.0.0)
  • click (>= 8.1.8)
  • colorama (>= 0.4.4)
  • tqdm (>= 4.62.0)
  • keyring (>= 23.0.0)
  • python-dateutil (>= 2.8.2)

Use pip to install the package:

pip install odoo-module-un-install-equitania

Usage

Command Line Interface

The tool provides three main commands:

  1. run - Execute module operations (install, uninstall, update)
  2. status - Display module status information
  3. export - Export installed modules to YAML file
# Run operations
odoo-un-install run [OPTIONS]

# Show version
odoo-un-install --version

# Show module status
odoo-un-install status [OPTIONS]

# Export installed modules
odoo-un-install export [OPTIONS]

Available Options:

Run Command Options:

$ odoo-un-install run --help

Options:
  --server_path DIRECTORY  Path to folder containing .env server configuration files
  --module_path DIRECTORY  Path to folder containing module configuration files
  --uninstall_modules      Uninstall modules defined in "Uninstall" section
  --install_modules        Install modules defined in "Install" section
  --update_modules         Update modules defined in "Install" section
  --check_dependencies     Check module dependencies before operations (recommended)
  --parallel               Process modules in parallel for faster execution
  --max_workers INTEGER    Maximum number of parallel workers [default: 5]
  --show_status            Show detailed module status report after operations
  -v, --verbose            Enable verbose output for debugging
  --help                   Show this message and exit

Status Command Options:

$ odoo-un-install status --help

Options:
  --server_path DIRECTORY  Path to folder containing .env server configuration files
  -v, --verbose            Enable verbose output for debugging
  --help                   Show this message and exit

Export Command Options:

$ odoo-un-install export --help

Options:
  --server_path DIRECTORY  Path to folder containing .env server configuration files
  --output FILE            Output YAML file path
  --include-base           Include base Odoo modules (default: exclude)
  --states TEXT            Module states to export (comma-separated)
                           Options: installed,to upgrade,to install,to remove
  -v, --verbose            Enable verbose output for debugging
  --help                   Show this message and exit

Quick Start Example

# Basic usage with .env configuration
odoo-un-install run --server_path=./env_configs --module_path=./modules_yaml --install_modules --uninstall_modules

# Using custom configuration paths
odoo-un-install run --server_path=$HOME/configs/servers --module_path=$HOME/configs/modules --install_modules --update_modules

Module Update Guide

How to Update Modules

To update existing modules, use the --update_modules flag:

odoo-un-install run --server_path=./servers --module_path=./modules --update_modules

The tool will use the modules listed in the Install section of your YAML files:

Install:
  - module_to_update_1
  - module_to_update_2

Update Process

When running with the --update_modules flag:

  1. The tool connects to each configured Odoo server
  2. For each module in the Install section:
    • If the module is already installed, it will be updated to the latest version
    • If the module is not installed, it will be skipped (unless --install_modules is also specified)

Combined Operations

You can combine update with installation and dependency checking:

odoo-un-install run --server_path=./servers --module_path=./modules --update_modules --install_modules --check_dependencies

This will:

  • Install modules that are not yet installed
  • Update modules that are already installed
  • Check dependencies before performing operations

Configuration Files

Server Configuration (.env)

Create .env files in your server configuration folder:

# Required fields
ODOO_URL=https://your-odoo-server.com
ODOO_USER=admin

# Optional fields
ODOO_PORT=443
ODOO_PASSWORD=your-password
ODOO_DATABASE=your-database
ODOO_USE_KEYRING=true

Benefits of .env format:

  • Industry-standard configuration format
  • Better IDE support and syntax highlighting
  • Easier integration with environment variables
  • Compatible with Docker and CI/CD pipelines

File naming: production.env, staging.env, localhost.env, etc.

For complete .env examples and documentation, see the env_examples/ directory.

Module Configuration (YAML)

Create YAML files in your module configuration folder:

Install:
  - module_name_1
  - module_name_2
Uninstall:
  - module_name_3
  - module_name_4

Examples

Basic usage:

# Install modules
odoo-un-install run --server_path=./env_configs --module_path=./modules_yaml --install_modules

# Uninstall modules
odoo-un-install run --server_path=./env_configs --module_path=./modules_yaml --uninstall_modules

# Update modules
odoo-un-install run --server_path=./env_configs --module_path=./modules_yaml --update_modules

# Install and update modules with dependency checking
odoo-un-install run --server_path=./env_configs --module_path=./modules_yaml --install_modules --update_modules --check_dependencies

# Check module status
odoo-un-install status --server_path=./env_configs

# Export installed modules to YAML
odoo-un-install export --server_path=./env_configs --output=my_modules.yaml

Export examples:

# Export only installed modules (excluding base Odoo modules)
odoo-un-install export --server_path=./env_configs --output=installed_modules.yaml

# Export all modules including base Odoo modules
odoo-un-install export --server_path=./env_configs --output=all_modules.yaml --include-base

# Export modules that need upgrade
odoo-un-install export --server_path=./env_configs --output=upgrade_modules.yaml --states="to upgrade"

# Export multiple states (installed + to upgrade)
odoo-un-install export --server_path=./env_configs --output=multi_state.yaml --states="installed,to upgrade"

Export Output Format:

The export command generates a structured YAML file with modules organized by category:

# Server: https://example.odoo.com
# Database: production_db
# Odoo Version: 18
# Export Date: 2025-06-24 10:30:45
# Total Modules: 45

Install:
  # Accounting (12 modules)
  - account
  - account_invoicing
  - account_payment
  - account_reports

  # CRM (5 modules)
  - crm
  - crm_livechat
  - crm_phone_validation

  # Human Resources (8 modules)
  - hr
  - hr_attendance
  - hr_holidays
  - hr_recruitment

  # Sales (10 modules)
  - sale
  - sale_management
  - sale_crm
  - sale_stock

  # Website (10 modules)
  - website
  - website_blog
  - website_crm
  - website_sale

Uninstall: []

Features:

  • Modules grouped and sorted by English category names
  • German category names automatically translated to English
  • Module count displayed for each category
  • Server and database information in header comments
  • Base Odoo modules excluded by default (use --include-base to include)

Advanced examples:

# Complete operation with all options
odoo-un-install run --server_path=./env_configs --module_path=./modules_yaml --uninstall_modules --install_modules --update_modules --check_dependencies --parallel --max_workers=10 --show_status --verbose

# Multiple servers with update
odoo-un-install run --server_path=$HOME/configs/odoo_servers --module_path=$HOME/configs/odoo_modules --uninstall_modules --install_modules --update_modules

# Parallel processing across multiple servers
odoo-un-install run --server_path=$HOME/configs/odoo_servers --module_path=$HOME/configs/odoo_modules --uninstall_modules --install_modules --update_modules --parallel

Security

Password Management Priority

The tool uses passwords in the following priority order:

  1. Environment variable ODOO_PASSWORD (if set in .env file or shell environment)
  2. System keyring (if use_keyring: true or ODOO_USE_KEYRING=true)
  3. Interactive prompt (fallback if no password found)

Recommendations

For Production Servers:

ODOO_URL=https://production.example.com
ODOO_USER=admin
ODOO_PASSWORD=              # Leave empty
ODOO_USE_KEYRING=true      # Use system keyring for secure storage

For Development:

ODOO_URL=http://localhost
ODOO_PORT=8069
ODOO_USER=admin
ODOO_PASSWORD=admin        # OK for local development
ODOO_USE_KEYRING=false

For CI/CD Pipelines:

ODOO_URL=https://staging.example.com
ODOO_USER=ci_user
ODOO_PASSWORD=${CI_ODOO_PASSWORD}  # From CI secrets
ODOO_USE_KEYRING=false

⚠️ Important: Never commit .env files with passwords to version control! Add *.env to your .gitignore (excluding templates like template.env.example)

Local Testing

Development Installation

# 1. Clone or navigate to the project directory
cd /path/to/odoo-module-un-install

# 2. Create and activate virtual environment
python3 -m venv .venv
source .venv/bin/activate  # On macOS/Linux
# or on Windows: .venv\Scripts\activate

# 3. Install dependencies with UV (recommended)
pip install uv
uv pip install -r requirements.txt

# 4. Install package in editable mode
uv pip install -e .

# 5. Verify installation
odoo-un-install --version
odoo-un-install --help

Test Configuration Setup

# Create test directories
mkdir -p test_config/servers
mkdir -p test_config/modules

# Create test .env server configuration
cat > test_config/servers/localhost.env << 'EOF'
ODOO_URL=http://localhost
ODOO_PORT=8069
ODOO_USER=admin
ODOO_PASSWORD=admin
ODOO_DATABASE=test_db
ODOO_USE_KEYRING=false
EOF

# Create test module YAML configuration
cat > test_config/modules/test_modules.yaml << 'EOF'
Install:
  - base
  - sale_management

Uninstall:
  - website_blog
EOF

Running Tests

# Test connection to server
odoo-un-install status --server_path=test_config/servers

# Test module installation with verbose output
odoo-un-install run \
  --server_path=test_config/servers \
  --module_path=test_config/modules \
  --install_modules \
  --verbose

# Test with example configurations
odoo-un-install run \
  --server_path=./env_examples \
  --module_path=./yaml_examples/modules_yaml \
  --install_modules \
  --verbose

# Run unit tests
pytest tests/ -v

# Run tests with coverage
pytest --cov=odoo_module_un_install tests/

Testing Checklist

  • ✅ Package installs without errors
  • ✅ CLI commands work (--version, --help)
  • ✅ .env files are parsed correctly
  • ✅ Connection to Odoo server succeeds
  • ✅ Module operations (install/uninstall/update) work
  • ✅ All unit tests pass (21/21)
  • ✅ Verbose logging shows detailed information

Changelog

See CHANGELOG.md for a detailed history of changes.

For release notes of the current version, see RELEASE_NOTES.md.

License

This project is licensed under the terms of the AGPLv3 license.

Support

For questions and support, please open an issue on the GitHub repository.

Contributors

  • Equitania Software GmbH - Website

Acknowledgments

This tool is built with:

  • OdooRPC - Odoo RPC client library
  • Click - Command-line interface framework
  • Colorama - Terminal color support

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

odoo_module_un_install_equitania-1.2.1.tar.gz (44.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file odoo_module_un_install_equitania-1.2.1.tar.gz.

File metadata

  • Download URL: odoo_module_un_install_equitania-1.2.1.tar.gz
  • Upload date:
  • Size: 44.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for odoo_module_un_install_equitania-1.2.1.tar.gz
Algorithm Hash digest
SHA256 aab420b1aa35fbf3b6a3328889730b7f84290e94e77d681a10b70435ca98a0df
MD5 8f2ce4b7008e8848f52ac34fcb1f3cbb
BLAKE2b-256 66defa0ea5baf9e3be64438a2bebdb2c1120d993bf67c7a409d020755325713d

See more details on using hashes here.

File details

Details for the file odoo_module_un_install_equitania-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: odoo_module_un_install_equitania-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 36.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for odoo_module_un_install_equitania-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5c0ee06c97da4cb378b25893083027a934bd1742b6ea8a78246de1a36fef9201
MD5 f04bf29ce9fcf502c373be279374a688
BLAKE2b-256 f56bb595cb7a8680fcabf7483ba17aaedfcb609f245dd970590e9d6023f28abd

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.2.1 This release

2 files

1.2.0

2 files

1.1.7

2 files

1.0.0

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page