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

Credits

Author:

Inspiration has been drawn from:

Maintainer

ACSONE SA/NV

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


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.0b1.tar.gz (16.0 kB view details)

Uploaded Source

Built Distribution

click_odoo-1.0.0b1-py2.py3-none-any.whl (17.7 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

File hashes

Hashes for click-odoo-1.0.0b1.tar.gz
Algorithm Hash digest
SHA256 54a9f133cf669835c5a26e4630f705ba1e13d1e406913a1b68d3cb2a713789c4
MD5 dd98915af88bdbbd1a995a140b2b29de
BLAKE2b-256 117f82cf551a8c59c7c852f2792924e8c21e5f131c3678cab52417bd44916e9a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for click_odoo-1.0.0b1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 c935d1b2b2d811b76450d92a495edbc1eb56317906b6eddd729e77a00b5dca79
MD5 ea51489fec4f8923fcd20c8b52c0b59f
BLAKE2b-256 c141287f096a5e4d6c396cab715845160eafb0351ec76651882d38d5fcef6fdd

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