命令行界面(CLI)¶
The CLI command-line interface offers several functionalities related to Odoo. You can use it to run the server, launch Odoo as a Python console environment, scaffold an Odoo module, populate a database or count the number of lines of code.
重要
The command to use to call the CLI depends on how you installed Odoo. In the examples below, we
assume that you are running Odoo from source with the
odoo-bin
file. If you installed Odoo from a distribution package or with Docker, you
must adapt the command.
进入您下载的Odoo社区源代码文件的根目录。
使用 ./odoo-bin 运行所有 CLI 命令
当安装Odoo时,一个名为 odoo
的可执行文件被添加到您的用户的 PATH。在下面的示例中,将所有出现的 odoo-bin 替换为 odoo 。
请参考 Odoo 官方 Docker 镜像的文档。
帮助和版本¶
- -h, --help¶
显示所有可用选项的帮助文本
- --version¶
shows Odoo version e.g. “Odoo Server 18.0”
小技巧
您可以通过运行以下命令在您的 shell 中启用自动补全功能
echo "complete -W '`./odoo-bin --help | \
sed -e 's/[^a-z_-]\(-\+[a-z0-9_-]\+\)/\n\1\n/' | \
grep -- '^-' | sort | uniq | tr '\n' ' '`' odoo-bin" >> ~/.bash_completion
运行服务器¶
- --addons-path <directories>¶
逗号分隔的目录列表,其中存储了模块。这些目录将被扫描以查找模块。
- --upgrade-path <upgrade_path>¶
指定一个额外的升级路径。
- --load <modules>¶
要加载的服务器级模块列表。这些模块应该提供与特定数据库无关的功能。这与在安装时始终绑定到特定数据库的模块(即大多数Odoo插件)形成对比。默认值为
base,web
。
- -c <config>, --config <config>¶
指定一个备用的 配置文件路径。如果未定义,Odoo 会检查
ODOO_RC
环境变量和默认位置$HOME/.odoorc
。请参阅配置文件部分 下面。
- -D <data-dir-path>, --data-dir <data-dir-path>¶
directory path where to store Odoo data (eg. filestore, sessions). If not specified, Odoo will fallback to a predefined path. On Unix systems its one defined in
$XDG_DATA_HOME
environmental variable or~/.local/share/Odoo
or/var/lib/Odoo
.
- -s, --save¶
saves the server configuration to the current configuration file (
$HOME/.odoorc
by default, and can be overridden using-c
).
- --pidfile=<pidfile>¶
服务器 PID 存储的文件路径
- --stop-after-init¶
在初始化后停止服务器。
- --geoip-city-db <path>¶
Absolute path to the GeoIP City database file.
- --geoip-country-db <path>¶
Absolute path to the GeoIP Country database file.
测试配置¶
- --test-enable¶
在模块安装后运行测试
- --test-file <file>¶
运行一个 Python 测试文件
- --test-tags [-][tag][/module][:class][.method]¶
逗号分隔的规范列表,用于过滤要执行的测试。如果设置,则启用单元测试。
示例:
--test-tags :TestClass.test_func,/test_module,external
The
-
specifies if we want to include or exclude tests matching this spec.该标签将匹配使用
tagged()
装饰器添加到类上的标签(所有 测试类 在明确删除之前都具有standard
和at_install
标签,请参阅装饰器文档)。*
will match all tags.如果在包含模式下省略了标签,则其值为
standard
。如果在排除模式下省略了标签,则其值为
*
。模块、类和方法将分别匹配模块名称、测试类名称和测试方法名称。
测试的筛选和执行会发生两次:在每个模块安装/更新之后和模块加载结束时。在每个阶段,测试都会通过
--test-tags
规范进行筛选,并通过动态规范at_install
和post_install
进一步筛选。
- --screenshots¶
指定目录,用于在 HttpCase.browser_js 测试失败时写入截图。默认为
/tmp/odoo_tests/db_name/screenshots
- --screencasts¶
启用屏幕录制并指定写入屏幕录制文件的目录。需要安装
ffmpeg
实用程序将帧编码为视频文件。否则,帧将被保留而不是视频文件。
数据库¶
- -r <user>, --db_user <user>¶
数据库用户名,用于连接到 PostgreSQL。
- -w <password>, --db_password <password>¶
数据库密码,如果使用 password authentication。
- --db_host <hostname>¶
数据库服务器的主机
Windows 上的
localhost
否则为UNIX套接字
- --db_port <port>¶
数据库监听的端口,默认为5432
- --db-filter <filter>¶
隐藏不匹配
<filter>
的数据库。过滤器是一个 正则表达式,附加了以下内容:%h
is replaced by the whole hostname the request is made on.%d
被替换为发出请求的子域名,除了www``(所以域名 ``odoo.com
和www.odoo.com
都匹配数据库odoo
)。这些操作区分大小写。在匹配所有数据库时添加选项
(?i)
(因此域名odoo.com
使用(?i)%d
可以匹配数据库Odoo
)。
自版本11起,还可以使用–database参数并指定逗号分隔的数据库列表来限制对给定数据库的访问权限
当结合这两个参数时,db-filter 优先于逗号分隔的数据库列表来限制数据库列表,而逗号分隔的列表用于执行所请求的操作,如模块升级。
$ odoo-bin --db-filter ^11.*$
限制访问以11开头的数据库
$ odoo-bin --database 11firstdatabase,11seconddatabase
限制访问仅限于两个数据库,11firstdatabase 和 11seconddatabase
$ odoo-bin --database 11firstdatabase,11seconddatabase -u base
限制访问仅限于两个数据库,11firstdatabase和11seconddatabase,并在一个数据库11firstdatabase上更新基础模块。如果数据库11seconddatabase不存在,则创建该数据库并安装基础模块。
$ odoo-bin --db-filter ^11.*$ --database 11firstdatabase,11seconddatabase -u base
限制访问以11开头的数据库,并在一个名为11firstdatabase的数据库上更新基础模块。如果11seconddatabase数据库不存在,则创建该数据库并安装基础模块。
- --pg_path </path/to/postgresql/binaries>¶
用于数据库管理器转储和恢复数据库的 PostgreSQL 二进制文件的路径。只有在这些二进制文件位于非标准目录中时,才需要指定此选项。
- --no-database-list¶
禁止列出系统上可用的数据库
- --db_sslmode¶
控制Odoo和PostgreSQL之间连接的SSL安全性。值应为’disable’、’allow’、’prefer’、’require’、’verify-ca’或’verify-full’。默认值为’prefer’
- --unaccent¶
可选的数据库中存储关系的表的名称
电子邮件¶
- --email-from <address>¶
当Odoo需要发送邮件时,用作<FROM>的电子邮件地址
- --from-filter <address or domain>¶
定义SMTP配置将应用于哪个电子邮件地址。该字段可以是域名或完整的电子邮件地址,也可以为空。如果发件人的电子邮件地址与此设置的过滤器不匹配,则将使用两个系统参数的组合来封装电子邮件:
mail.default.from
和mail.catchall.domain
。例如,”Admin” <admin@example.com> => “Admin” <notifications@mycompany.com>。
- --smtp <server>¶
连接以发送邮件的SMTP服务器的地址
- --smtp-port <port>¶
- --smtp-ssl¶
如果设置,Odoo应该使用SSL/STARTSSL SMTP连接
- --smtp-user <name>¶
连接 SMTP 服务器的用户名
- --smtp-password <password>¶
连接SMTP服务器的密码
- --smtp-ssl-certificate-filename <path/to/cert.pem>¶
将使用 SSL 证书进行身份验证。如果设置,则需要
smtp-ssl-private-key
。
- --smtp-ssl-private-key-filename <path/to/key.pem>¶
使用 SSL 私钥进行身份验证。如果设置,则需要
smtp-ssl-certificate
。
国际化¶
使用这些选项将Odoo翻译成另一种语言。请参阅用户手册中的i18n部分。选项“-d”是必需的。在导入的情况下,“-l”选项是必需的。
- --load-language <languages>¶
指定您想要加载的翻译语言(用逗号分隔)
- -l, --language <language>¶
指定翻译文件的语言。与 –i18n-export 或 –i18n-import 一起使用。
- --i18n-export <filename>¶
将所有待翻译的句子导出到 CSV 文件、PO 文件或 TGZ 压缩包中并退出。
- --i18n-import <filename>¶
导入包含翻译的 CSV 或 PO 文件并退出。必须使用 ‘-l’ 选项。
- --i18n-overwrite¶
在更新模块或导入CSV或PO文件时覆盖现有的翻译术语。
- --modules¶
指定要导出的模块。与 –i18n-export 一起使用。
高级选项¶
开发人员功能¶
- --dev <feature,feature,...,feature>¶
逗号分隔的功能列表。仅供开发目的使用,请勿在生产中使用。可能的功能包括:
all
: all the features below are activatedxml
: read QWeb template from xml file directly instead of database. Once a template has been modified in database, it will be not be read from the xml file until the next update/init. Particularly, templates are not translated on using this option.reload
: restart server when python file are updated (may not be detected depending on the text editor used)qweb
: break in the evaluation of QWeb template when a node containst-debug='debugger'
(i)p(u)db
: start the chosen python debugger in the code when an unexpected error is raised before logging and returning the error.werkzeug
: display the full traceback on the frontend page in case of exception
HTTP¶
- --no-http¶
不要启动HTTP或长轮询工作进程(可能仍然启动 cron 工作进程)
警告
如果设置了
--test-enable
,则此选项无效,因为测试需要一个可访问的 HTTP 服务器
- --http-interface <interface>¶
HTTP 服务器监听的 TCP/IP 地址,默认为
0.0.0.0
(所有地址)
- -p <port>¶
- --http-port <port>¶
HTTP服务器监听的端口,默认为8069。
- --gevent-port <port>¶
在多进程或协程模式下用于 WebSocket 连接的 TCP 端口,默认为 8072。在默认(线程化)模式下不使用。
- --proxy-mode¶
通过 Werkzeug’s proxy support 启用
X-Forwarded-*
头部的使用。只有在运行在可信任的网络代理后面时才启用此选项!It ignores all
X-Forwarded-*
headers in caseX-Forwarded-Host
is missing from the request.It always gets the real IP from the last entry of the
X-Forwarded-For
chain. Configure your web server accordingly using directives such as nginx’s set_real_ip_from in case there are other trusted proxies along the chain that must be ignored.X-Forwarded-Proto
andX-Forwarded-Host
are used to update the request root URL, which in turn is used to update theweb.base.url
system parameter upon a successful admin authentication. This system parameter is used to generate all links for the current database; see 数据库的Web基本URL.警告
代理模式 绝不能 在非反向代理场景下启用
- --x-sendfile¶
将附件文件的服务委托给静态 Web 服务器,并在流响应上设置
X-Sendfile
(apache) 和X-Accel-*
(nginx) 的 HTTP 标头。有关 Web 服务器配置,请参见 提供静态文件和附件服务。
日志记录¶
By default, Odoo displays all logging of level INFO
, WARNING
and ERROR
. All logs
independently of the level are output on stderr
. Various options are available to redirect
logging to other destinations and to customize the verbosity.
- --logfile <file>¶
sends logging output to the specified file instead of
stderr
. On Unix, the file can be managed by external log rotation programs and will automatically be reopened when replaced
- --syslog¶
logs to the system’s event logger: syslog on unices and the Event Log on Windows.
两者都不可配置
- --log-db <dbname>¶
logs to the
ir.logging
model (ir_logging
table) of the specified database. The database can be the name of a database in the “current” PostgreSQL, or a PostgreSQL URI for e.g. log aggregation.
- --log-handler <handler-spec>¶
LOGGER:LEVEL
, enablesLOGGER
at the providedLEVEL
e.g.odoo.models:DEBUG
will enable all logging messages at or aboveDEBUG
level in the models.冒号
:
是必须的可以省略记录器以配置根(默认)处理程序
如果省略了级别,则将记录器设置为
INFO
该选项可以重复使用以配置多个记录器,例如:
$ odoo-bin --log-handler :DEBUG --log-handler werkzeug:CRITICAL --log-handler odoo.fields:WARNING
- --log-web¶
启用 HTTP 请求和响应的 DEBUG 日志记录,相当于
--log-handler=odoo.http:DEBUG
- --log-sql¶
启用SQL查询的DEBUG日志记录,相当于
--log-handler=odoo.sql_db:DEBUG
- --log-level <level>¶
Shortcut to more easily set predefined levels on specific loggers. “real” levels (
critical
,error
,warn
,debug
) are set on theodoo
andwerkzeug
loggers (except fordebug
which is only set onodoo
).Odoo还提供了针对不同记录器应用的调试伪级别:
debug_sql
将 SQL 日志记录器设置为
debug
等同于
--log-sql
debug_rpc
将
odoo
和 HTTP 请求日志记录器设置为debug
等同于
--log-level debug --log-request
debug_rpc_answer
将
odoo
和 HTTP 请求和响应的日志记录器设置为debug
等同于
--log-level debug --log-request --log-response
注解
在
--log-level
和--log-handler
之间发生冲突时,后者会被使用
多进程¶
- --workers <count>¶
如果
count
不为 0(默认值),则启用多进程并设置指定数量的 HTTP 工作进程(子进程处理 HTTP 和 RPC 请求)。注解
多进程模式仅适用于基于Unix的系统
许多选项允许限制和回收工作进程:
- --limit-request <limit>¶
工作进程在被回收和重新启动之前将处理的请求数。
默认为 8196。
- --limit-memory-soft <limit>¶
每个工作进程允许的最大虚拟内存。如果超过限制,工作进程将在当前请求结束时被杀死并回收。
Defaults to 2048MiB (2048*1024*1024B).
- --limit-memory-hard <limit>¶
虚拟内存的硬限制,任何超过限制的工作进程都将立即被杀死,而不必等待当前请求处理结束。
Defaults to 2560MiB (2560*1024*1024B).
- --limit-time-cpu <limit>¶
防止工作进程在每个请求中使用超过<limit> CPU秒。如果超过限制,工作进程将被终止。
默认为 60。
- --limit-time-real <limit>¶
防止工作进程处理请求的时间超过<limit>秒。如果超过限制,工作进程将被终止。
与
--limit-time-cpu
不同之处在于这是一个包括 SQL 查询在内的 “wall time” 限制。默认为 120。
配置文件¶
大多数命令行选项也可以通过配置文件指定。大多数情况下,它们使用类似的名称,前缀 -
被移除,其他 -
被替换为 _
,例如: --db-template
变成了 db_template
。
一些转换不符合模式:
--db-filter
变为dbfilter
--no-http
对应http_enable
布尔值logging presets (所有以
--log-
开头的选项,除了--log-handler
和--log-db
之外) 只是将内容添加到log_handler
,直接在配置文件中使用--smtp
存储为smtp_server
--database
存储为db_name
--i18n-import
和--i18n-export
在配置文件中完全不可用
默认的配置文件是 $HOME/.odoorc
,可以使用 --config
来覆盖。使用 --save
可以将当前的配置状态保存回该文件。与命令行相关的配置项应在 [options]
部分中指定。
这是一个示例文件:
[options]
db_user=odoo
dbfilter=odoo
命令行¶
Odoo 命令行还允许将 Odoo 启动为 Python 控制台环境。这样可以直接与 orm 及其功能进行交互。
$ odoo-bin shell
Example
Adding an exclamation mark to all contacts’ names:
In [1]: records = env["res.partner"].search([])
In [2]: records
Out[2]: res.partner(14, 26, 33, 21, 10)
In [3]: for partner in records:
...: partner.name = "%s !" % partner.name
...:
In [4]: env.cr.commit()
重要
By default, the shell is running in transaction mode. This means that any change made to the
database is rolled back when exiting the shell. To commit changes, use env.cr.commit()
.
- --shell-interface (ipython|ptpython|bpython|python)¶
Specify a preferred REPL to use in shell mode. This shell is started with the
env
variable already initialized to be able to access the ORM and other Odoo modules.
另请参阅
脚手架¶
Scaffolding是自动创建骨架结构以简化引导(在Odoo的情况下是新模块)的过程。虽然不是必需的,但它避免了设置基本结构和查找所有起始要求的繁琐过程。
通过 odoo-bin scaffold 子命令可以使用脚手架。
$ odoo-bin scaffold my_module /addons/
- name (required)¶
要创建的模块名称,可以以各种方式进行修改以生成编程名称(例如,模块目录名称,模型名称等)
- destination (default=current directory)¶
要创建新模块的目录,默认为当前目录
这将在目录 /addons/ 中创建模块 my_module。
数据库填充¶
Odoo Populate allows to duplicate existing data in a given database. This can be used
for testing and benchmarking when large tables are needed. The duplication process
introduces variation for some fields to respect UNIQUE
constraints, among other things.
It also follows x2Many relationships.
$ odoo-bin populate -d my_database --models res.partner,account.move --factors 1000
- -d <database>¶
name of the database to populate
- --models¶
list of models to populate. Models appearing twice will only be populated once.
- --factors¶
list of populate factors. In case a factor is missing for a model, the last factor in the list will be used.
- --sep¶
separator used to generate record names
Cloc¶
Odoo Cloc 是一种工具,用于计算Python、JavaScript、CSS、SCSS或XML中编写的相关行数。这可以用作额外模块维护定价的粗略度量。
命令行选项¶
- -d <database>, --database <database>¶
--addons-path
选项来指定模块文件夹的路径。--path
结合使用,则计数将是两个选项结果的总和(可能有重叠)。这两个选项中至少需要一个来指定要处理的代码。$ odoo-bin cloc --addons-path=addons -d my_database
另请参阅
- -p <path>, --path <path>¶
--database
结合使用,则计数将是这两个选项结果的总和(可能有重叠)。这两个选项中至少需要一个来指定要处理的代码。$ odoo-bin cloc -p addons/account
可以通过重复选项来提供多个路径。
$ odoo-bin cloc -p addons/account -p addons/sale
另请参阅
- --addons-path <directories>¶
--database
选项,则必填。- -c <directories>¶
指定一个配置文件来替代 --addons-path
选项。
$ odoo-bin cloc -c config.conf -d my_database
- -v, --verbose¶
显示每个文件的计数行的详细信息。
已处理的文件¶
使用 --database
选项¶
Odoo Cloc 统计给定数据库中额外安装模块中每个文件的行数。此外,它还计算在数据库中直接创建或导入的服务器操作和自定义计算字段的 Python 行。最后,它还计算从导入模块中的 Javascript、CSS 和 SCSS 文件以及 QWeb 视图的代码行数。
默认情况下,某些文件被排除在计数之外:
清单文件 (
__manifest__.py
或__openerp__.py
)文件夹
static/lib
的内容在文件夹
tests
和static/tests
中定义的测试The migrations scripts defined in the folder
migrations
andupgrades
在清单文件的
demo
或demo_xml
部分声明的XML文件
对于特殊情况,可以针对每个模块定义应该被 Odoo Cloc 忽略的文件列表。这是在清单的 cloc_exclude
条目中指定的:
"cloc_exclude": [
"lib/common.py", # exclude a single file
"data/*.xml", # exclude all XML files in a specific folder
"example/**/*", # exclude all files in a folder hierarchy recursively
"**/*.scss", # exclude all scss file from the module
]
**/*
来忽略整个模块。这对于排除模块的维护服务费用是有用的。使用 --path
选项¶
此方法与 –database option 相同,如果给定文件夹中存在清单文件,则与之一样。否则,它会计算所有文件。
识别额外模块¶
为了区分标准模块和额外模块,Odoo Cloc 使用以下启发式方法:位于与 base
、 web
或 web_enterprise
标准模块相同的父目录中(在跟随符号链接后的真实文件系统路径)的模块被视为标准模块。其他模块被视为额外模块。
错误处理¶
Odoo Cloc 无法计算某些文件。这些文件将在输出的末尾报告。
超过最大文件大小限制¶
Odoo Cloc 拒绝任何大于 25MB 的文件。通常,源文件小于 1 MB。如果文件被拒绝,可能是以下原因:
一个包含大量数据的生成的 XML 文件。它应该在清单中排除。
应该放置在
static/lib
文件夹中的 JavaScript 库。
语法错误¶
Odoo Cloc 无法计算具有语法问题的 Python 文件的代码行数。如果额外的模块包含这样的文件,应该修复它们以允许模块加载。如果模块在存在这些文件的情况下仍然工作,那么它们可能没有被加载,因此应该从模块中删除,或者至少通过 cloc_exclude
在清单中排除。
TSConfig生成器¶
在编写JavaScript时,有一些方法可以帮助您的编辑器提供强大的自动完成功能。其中一种方法是使用tsconfig.json文件。虽然最初是为TypeScript设计的,但编辑器也可以使用它的信息来处理纯JavaScript。使用此配置文件,您现在可以在模块之间获得完整的自动完成功能。
生成此文件的命令需要尽可能多的未命名参数。这些是您的插件目录的相对路径。在下面的示例中,我们向上移动一个文件夹,将tsconfig文件保存在包含社区和企业的文件夹中。
$ community/odoo-bin tsconfig --addons-path community/addons,community/odoo/addons,enterprise > tsconfig.json