A package to un/install modules in Odoo
Project description
Odoo Module (Un)Install Tool
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:
run- Execute module operations (install, uninstall, update)status- Display module status informationexport- 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:
- The tool connects to each configured Odoo server
- For each module in the
Installsection:- 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_modulesis 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-baseto 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:
- Environment variable
ODOO_PASSWORD(if set in .env file or shell environment) - System keyring (if
use_keyring: trueorODOO_USE_KEYRING=true) - 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:
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ef921f9bb0d81b0383ed497184af1a5959223b5a471073726553d9e4fc153f5
|
|
| MD5 |
0cb57cd0b7ded10e9954d401573d5218
|
|
| BLAKE2b-256 |
8410be132c34f33abf8e0745209a26851ad0df7a04982ce74ff749872ed18b41
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f654b3596b69548eee95850c79b3c7cd7642a6c2a0f570accfc50dc8e4f13580
|
|
| MD5 |
4b2339ad66a4ff025d3866ce3fa48efb
|
|
| BLAKE2b-256 |
a307f331ec9f878fefb64c2e2dc475f432e7d6fac54d29ad260a5043dfa5fb4c
|