Skip to main content

A package to un/install modules in Odoo

Project description

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

Project details


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.0.tar.gz (40.3 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.0.tar.gz.

File metadata

  • Download URL: odoo_module_un_install_equitania-1.2.0.tar.gz
  • Upload date:
  • Size: 40.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","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.0.tar.gz
Algorithm Hash digest
SHA256 9ef921f9bb0d81b0383ed497184af1a5959223b5a471073726553d9e4fc153f5
MD5 0cb57cd0b7ded10e9954d401573d5218
BLAKE2b-256 8410be132c34f33abf8e0745209a26851ad0df7a04982ce74ff749872ed18b41

See more details on using hashes here.

File details

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

File metadata

  • Download URL: odoo_module_un_install_equitania-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 35.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f654b3596b69548eee95850c79b3c7cd7642a6c2a0f570accfc50dc8e4f13580
MD5 4b2339ad66a4ff025d3866ce3fa48efb
BLAKE2b-256 a307f331ec9f878fefb64c2e2dc475f432e7d6fac54d29ad260a5043dfa5fb4c

See more details on using hashes here.

Supported by

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