Beautiful, robust CLI for Odoo
Project description
click-odoo helps you create and run beautiful and robust command line scripts for Odoo. It is based on the excellent Click library.
Quick start
Install it in a (preferably virtual) environment where Odoo is installed:
pip install click-odoo
Assuming the following script named list-users.py.
#!/usr/bin/env click-odoo
from __future__ import print_function
for u in env['res.users'].search([]):
print(u.login, u.name)
It can be run with:
click-odoo -d dbname --log-level=error list-users.py
or:
./list-users.py -d dbname --log-level=error
The third technique to create scripts looks like this. Assuming the following script named list-users2.py.
#!/usr/bin/env python
from __future__ import print_function
import click
import click_odoo
@click.command()
@click_odoo.env_options(default_log_level='error')
@click.option('--say-hello', is_flag=True)
def main(env, say_hello):
if say_hello:
click.echo("Hello!")
for u in env['res.users'].search([]):
print(u.login, u.name)
if __name__ == '__main__':
main()
It can be run like this:
$ ./list-users2.py --help Usage: list-users2.py [OPTIONS] Options: -c, --config PATH Specify the Odoo configuration file. Other ways to provide it are with the ODOO_RC or OPENERP_SERVER environment variables, or ~/.odoorc (Odoo >= 10) or ~/.openerp_serverrc. -d, --database TEXT Specify the database name. --log-level TEXT Specify the logging level. Accepted values depend on the Odoo version, and include debug, info warn, error. [default: error] --logfile PATH Specify the log file. --say-hello --help Show this message and exit. $ ./list-users2.py --say-hello -d dbname Hello! admin Administrator ...
Supported Odoo versions
Odoo version 8, 9, 10 and 11 are supported.
An important design goal is to provide a consistent behaviour across Odoo versions.
Database transactions
click-odoo does not commit the transaction for you. To persist changes made to the database, use env.cr.commit().
Logging
In version 8, Odoo logs to stdout by default. On other versions it is stderr. click-odoo attempts to use stderr for Odoo 8 too.
Logging is controlled by the usual Odoo logging options (–log-level, –logfile) or the Odoo configuration file.
Command line interface (click-odoo)
Usage: click-odoo [OPTIONS] [SCRIPT] [SCRIPT_ARGS]...
Execute a python script in an initialized Odoo environment. The script has
access to a 'env' global variable which is an odoo.api.Environment
initialized for the given database. If no script is provided, the script
is read from stdin or an interactive console is started if stdin appears
to be a terminal.
Options:
-c, --config PATH Specify the Odoo configuration file. Other
ways to provide it are with the ODOO_RC or
OPENERP_SERVER environment variables, or
~/.odoorc (Odoo >= 10) or
~/.openerp_serverrc.
-d, --database TEXT Specify the database name.
--log-level TEXT Specify the logging level. Accepted values
depend on the Odoo version, and include
debug, info, warn, error. [default: info]
--logfile PATH Specify the log file.
-i, --interactive / --no-interactive
Inspect interactively after running the
script.
--shell-interface TEXT Preferred shell interface for interactive
mode. Accepted values are ipython, ptpython,
bpython, python. If not provided they are
tried in this order.
--help Show this message and exit.
Most options above are the same as odoo options and behave the same. Additional options can be set the the configuration file. Note however that most server-related options (workers, http interface etc) are ignored because no server is actually started when running a script.
An important feature of click-odoo compared to, say, odoo shell is the capability to pass arguments to scripts.
In order to avoid confusion between click-odoo options and your script options and arguments, it is recommended to separate them with --:
click-odoo -d dbname -- list-users.py -d a b ./list-users.py -d dbname -- -d a b
In both examples above, sys.argv[1:] will contain ['-d', 'a', 'b'] in the script.
API
click_odoo.env_options decorator
TODO
OdooEnvironment context manager (experimental)
This package also provides an experimental an OdooEnvironment context manager.
Example:
from click_odoo import OdooEnvironment
with OdooEnvironment(database='dbname') as env:
env['res.users'].search([])
Useful links
pypi page: https://pypi-hypernode.com/pypi/click-odoo
code repository: https://github.com/acsone/click-odoo
report issues at: https://github.com/acsone/click-odoo/issues
Credits
Author:
Stéphane Bidoul (ACSONE)
Inspiration has been drawn from:
odoo’s own shell command
Maintainer
This project is maintained by ACSONE SA/NV.
Changes
1.0.0b1 (2018-03-20)
clear cache when starting environment (mostly useful for tests)
simplify and test transaction and exception handling
when leaving the env, log the exception to be sure it is visible when using –logfile
1.0.0a2 (2018-03-19)
improve transaction management: avoid some rare deadlock
avoid masking oringal exception in case of error during rollback
make sure scripts launched by click-odoo have __name__ == ‘__main__’
add –logfile option
1.0.0a1 (2018-03-19)
first alpha
Project details
Release history Release notifications | RSS feed
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
File details
Details for the file click-odoo-1.0.0b1.tar.gz
.
File metadata
- Download URL: click-odoo-1.0.0b1.tar.gz
- Upload date:
- Size: 16.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 54a9f133cf669835c5a26e4630f705ba1e13d1e406913a1b68d3cb2a713789c4 |
|
MD5 | dd98915af88bdbbd1a995a140b2b29de |
|
BLAKE2b-256 | 117f82cf551a8c59c7c852f2792924e8c21e5f131c3678cab52417bd44916e9a |
File details
Details for the file click_odoo-1.0.0b1-py2.py3-none-any.whl
.
File metadata
- Download URL: click_odoo-1.0.0b1-py2.py3-none-any.whl
- Upload date:
- Size: 17.7 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c935d1b2b2d811b76450d92a495edbc1eb56317906b6eddd729e77a00b5dca79 |
|
MD5 | ea51489fec4f8923fcd20c8b52c0b59f |
|
BLAKE2b-256 | c141287f096a5e4d6c396cab715845160eafb0351ec76651882d38d5fcef6fdd |