Odoo CLI(Command Line Interface)耍起来

admin 2020-7-7 13588


本文概述了我们作为开发人员如何使用Odoo命令行。

为了对其进行解释,我们已经安装了odoo v9系列GitHub存储库,并使用最少的配置创建了一个自定义配置文件(位于/opt/odoo9.conf)。


一、Odoo脚本哲学

有本个脚本可供命令行访问:

1、odoo.py(python脚本)

2、openerp-server(bash脚本)

3、openerp-gevent(用于gevent环境的bash脚本)

所有这些脚本最终都是运行:

import openerp
openerp.cli.main()

因此,基本上,脚本的执行会调用openerp.cli的主要方法,该方法负责使用配置参数(来自openerp.tools.config)运行openerp.service.server.start。


二、让我们开始玩转odoo.py

我们可以通过运行位于Odoo文件夹的父目录中的odoo.py脚本文件来访问Odoo命令行界面。

odoo.py就是python脚本,就像其他bash脚本openerp-server和openerp-gevent一样。

就像在运行./odoo.py时一样,我尚未关联任何自定义配置文件/参数,这就是为什么Odoo使用以下默认配置(~/.openerp_serverrc)运行的原因:

{'addons_path': '/opt/odoo9/openerp/addons,/opt/odoo9/addons',
 'admin_passwd': 'admin',
 'config': None,
 'csv_internal_sep': ',',
 'data_dir': '/opt/odoo9/.local/share/Odoo',
 'db_host': False,
 'db_maxconn': 64,
 'db_name': False,
 'db_password': False,
 'db_port': False,
 'db_template': 'template1',
 'db_user': False,
 'dbfilter': '.*',
 'debug_mode': False,
 'demo': {},
 'dev_mode': False,
 'email_from': False,
 'geoip_database': '/usr/share/GeoIP/GeoLiteCity.dat',
 'import_partial': '',
 'init': {},
 'language': None,
 'limit_memory_hard': 2684354560,
 'limit_memory_soft': 2147483648,
 'limit_request': 8192,
 'limit_time_cpu': 60,
 'limit_time_real': 120,
 'list_db': True,
 'load_language': None,
 'log_db': False,
 'log_db_level': 'warning',
 'log_handler': [':INFO'],
 'log_level': 'info',
 'logfile': None,
 'logrotate': False,
 'longpolling_port': 8072,
 'max_cron_threads': 2,
 'osv_memory_age_limit': 1.0,
 'osv_memory_count_limit': False,
 'overwrite_existing_translations': False,
 'pg_path': None,
 'pidfile': None,
 'proxy_mode': False,
 'publisher_warranty_url': 'http://services.openerp.com/publisher-warranty/',
 'reportgz': False,
 'root_path': '/opt/odoo9/openerp',
 'save': None,
 'server_wide_modules': None,
 'smtp_password': False,
 'smtp_port': 25,
 'smtp_server': 'localhost',
 'smtp_ssl': False,
 'smtp_user': False,
 'stop_after_init': False,
 'syslog': False,
 'test_commit': False,
 'test_enable': False,
 'test_file': False,
 'test_report_directory': False,
 'translate_in': None,
 'translate_modules': ['all'],
 'translate_out': None,
 'unaccent': False,
 'update': {},
 'without_demo': False,
 'workers': 0,
 'xmlrpc': True,
 'xmlrpc_interface': '',
 'xmlrpc_port': 8069}

注意:Odoo将配置数据以dict格式存储在openerp.tools.config.options中,其中键代表配置参数,值代表参数值。

默认配置存储在$HOME/.下的openerp_serverrc中。

我们可以从命令行手动覆盖上述所有默认参数。

要获取可用参数的列表,只需在./odoo.py之后使用–help选项,如下所示:

 ./odoo.py --h


三、xmlrpc 端口和addons路径

要更改默认端口,我们可以使用–xmlrpc-port <端口>

对于更改/添加另一个插件路径,请使用–addons-path <directories>

./odoo.py --xmlrpc-port 9069 --addons-path /opt/odoo9/openerp/addons,/opt/odoo9/addons,/opt/odoo9/customs


四、使用CLI安装模块

Odoo CLI提供命令 -i <模块>,–init <模块> 用于模块安装。

例如,为了安装销售模块:

./odoo.py -d odoo9db -i sale

我们也可以一次安装多个模块,方法是将模块名称以逗号分隔:

./odoo.py -d odoo9db -i sale,product


五、使用CLI更新模块

要更新模块,我们可以使用 -u <模块>,–update <模块> 参数。

为了更新销售模块:

./odoo.py -d odoo9db -u website_sale


六、使用自定义配置

与每次运行Odoo时手动传入–xmlrpc-port和–addons-path不同,我们可以将最常见的设置保存在配置文件中,并直接使用-c <config>或–config <config>指定配置文件:

./odoo.py -c /etc/odoo9.conf

下面是我的odoo9.conf配置文件:

addons_path = /opt/odoo9/openerp/addons,/opt/odoo9/addons,/opt/odoo9/custom
#add one another addons path('/opt/odoo9/custom')
admin_passwd= webkul,
#change my admin_passwd to webkul
db_user = odoo9
#associate my odoo9 db_user
xmlrpc_port = 9069
#change  xmlrpc_port to 9069
logfile=  /var/log/odoo/odoo9-server.log
#add a separate logfile
logrotate = True
#enabled log-rotation

因此在这里,我们不需要每次都手动传递通用参数,如果需要,我们可以根据需要再次传递特定参数。

 

七、使用CLI测试模块

Odoo主要为测试驱动开发提供两种类型的参数

1、–test-enable (用于所有模块测试)

2、–test-file(用于特定的模块测试)

用于测试数据库(odoo9db)中的所有模块

/odoo.py -c /etc/odoo9.conf -d odoo9db --test-enable

在这里,我们使用-c传递了自定义配置文件路径,并使用-d传递了数据库名称。

用于测试数据库(odoo9db)中的特定模块(销售):

./odoo.py -c /etc/odoo9.conf -d odoo9db -u sale --test-file /opt/odoo9/addons/sale/tests

在这里,我们使用-c传递了自定义配置文件路径,使用-d传递了数据库名称,并使用–test-file来测试销售文件。

注意:如果您已经使用了–test-file,则不需要通过–test-enable,并且不要忘记在运行特定模块的test时使用-i/-u 。


八、其他有用命令

–stop-after-init

–db-filter

-save


–stop-after-init : 它是一个帮助程序参数,该参数会在先前的参数(如安装,更新,测试)执行后立即停止正在运行的Odoo服务器。.

./odoo.py -d odoo9db -u bus,fleet --stop-after-init
# 在bus,fleet模块更新完后停止服务
./odoo.py -d odoo9db -i website_sale --stop-after-init
# 在website_sale模块更新完后停止服务
./odoo.py -c /etc/odoo9.conf -d odoo9db --test-enable  --stop-after-init
# 在运行Odoo模块的测试案例后停止服务器
./odoo.py -c /etc/odoo9.conf -d odoo9db --test-file /opt/odoo9/addons/sale/tests --stop-after-init
# 在运行销售模块测试案例后停止服务器


–db-filter: 用于隐藏符合正则表达式规则的数据库

./odoo.py -c /etc/odoo9.conf --db-filter webkul.*
# 过滤出名称以webkul开头的数据库,例如 webkuldemo,webkuldb等


-save: 我们可以使用–save把当前运行的配置保存到配置配置文件

./odoo.py --xmlrpc-port 9069 --addons-path /opt/odoo9/openerp/addons,/opt/odoo9/addons,/opt/odoo9/customs --db-filter webkul.* -save
# 现在当前使用的参数条目将保存在永久的默认配置文件($HOME/. openerp_serverrc)中。
/odoo.py -c /etc/odoo9.conf --db-filter webkul.* -save
# 现在当前使用的参数将永久保存在提及的配置文件中。


九、让我们开始耍起Odoo Shell

与其他框架一样,Odoo还提供了用于数据库访问和数据操作的Shell接口。我一直很喜欢使用shell而不是使用GUI来进行数据库管理,odoo shell界面太快了,这节省了我宝贵的时间。 要访问Odoo的shell接口,我们应该按如下所示运行./odoo.py shell。

./odoo.py shell
dir()
#['__builtins__', 'openerp']

这将为我们提供shell的openerp软件包。我在下面发布了一个使用Shell访问db服务的示例。

from openerp.service import db
#help(db)
db.list_dbs()
#列出可用数据库
db.exp_drop('dbname')
#删除数据库
db.exp_duplicate_database('olddb','newdb')
#复制数据库
db.exp_create_database('dbname',None,'en_US','username','password')
#创建新数据


如果要处理Odoo数据,则必须使用shell传递数据库名称,例如:

./odoo.py shell -d dbname
dir()
#['__builtins__', 'env', 'openerp', 'self']


现在有了self和environment,我们可以访问下面的odoo模型数据:

model = self.env['res.partner']
domain=[]
model.search(domain)
#res.partner(1, 7, 6, 4, 29, 8)
vals = dict(name='demouser', email='demo')
model.partner(vals)
#res.partner(30,)


最新回复 (0)
返回