Skip to main content

Beautiful, robust CLI for Odoo

Project description

License: LGPL-3 https://badge.fury.io/py/click-odoo.svg https://travis-ci.org/acsone/click-odoo.svg?branch=master https://codecov.io/gh/acsone/click-odoo/branch/master/graph/badge.svg

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]
  --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 attemps 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]
  -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([])

Credits

Author:

Inspiration has been drawn from:

Maintainer

ACSONE SA/NV

This project is maintained by ACSONE SA/NV.

Changes

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


Download files

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

Source Distribution

click-odoo-1.0.0a2.tar.gz (8.4 kB view details)

Uploaded Source

Built Distribution

click_odoo-1.0.0a2-py2.py3-none-any.whl (12.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file click-odoo-1.0.0a2.tar.gz.

File metadata

File hashes

Hashes for click-odoo-1.0.0a2.tar.gz
Algorithm Hash digest
SHA256 ad6160f99a96a912284dc1483080d61b69a6c6e64e420c4e8399bfd571c8b6a2
MD5 8ac54c2ca683b341ccc512506d64ff67
BLAKE2b-256 17723904044d21c48bcaae7034d422ef051e82da1bffedce626f14cb3ba61ca6

See more details on using hashes here.

File details

Details for the file click_odoo-1.0.0a2-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for click_odoo-1.0.0a2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 af4b4b01fe3354f0605861d236b0090cba27ea2b8cf76dac7059e8eec3fb56a9
MD5 435bf3df0ff412166fc0ac22da06e515
BLAKE2b-256 64c1a75c5cbde1da29fd91f4926b3d70cbdf0f83bec86f1eff0c6e1831ea249b

See more details on using hashes here.

Supported by

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