命令行界面(CLI)¶
CLI 命令行界面 提供与 Odoo 相关的多项功能。你可以用它来 运行服务器、以 Python 控制台环境启动 Odoo、为 Odoo 模块创建脚手架、复制记录、填充数据库,或 统计代码行数。
重要
调用 CLI 的命令取决于 Odoo 的安装方式。在下面的示例中,我们假设你使用 odoo-bin 文件 从源码运行 Odoo。如果你通过 发行版软件包 或 Docker 安装了 Odoo,则必须相应调整命令。
进入下载 Odoo 社区版源码文件的目录根目录。
使用 ./odoo-bin 运行所有 CLI 命令
安装 Odoo 时,会在用户的 PATH 中添加一个名为 odoo 的可执行文件。请将下面示例中所有 odoo-bin 替换为 odoo。
请参阅 Odoo 官方 Docker 镜像文档。
版本¶
- --version¶
显示 Odoo 版本,例如 “Odoo Server 20.0”
小技巧
可以通过运行以下命令在 shell 中启用自动补全
COMMANDS=$(odoo-bin --help | sed -e "s/^ \([^ ]\+\).*$/ \1/gp;d" | xargs)
echo "complete -W '$COMMANDS' odoo-bin" >> ~/.bash_completion
help - 显示可用命令¶
此命令显示 Odoo 的所有可用命令。
它没有选项。
server - 运行服务器¶
此命令是默认命令:可以省略不写,系统仍会选用它。
- --reinit <modules>¶
在启动服务器之前要重新初始化的模块的逗号分隔列表。(需要
-d)。重新初始化类似于不执行任何升级脚本的简单升级。它以
init模式而不是update模式加载数据,主要影响标记为'noupdate'的记录。所有直接或间接依赖所指定模块的模块也会被重新初始化。此选项仅用于调试或开发目的。请勿用于生产数据库。
- --addons-path <directories>¶
存储模块的目录的逗号分隔列表。系统会扫描这些目录以查找模块。
- --upgrade-path <upgrade_path>¶
从中加载额外升级脚本的目录的逗号分隔列表。
- --pre-upgrade-scripts <pre_upgrade_scripts>¶
升级脚本路径的逗号分隔列表。当请求升级任何模块时,这些脚本会在加载 base 模块之前运行。这在主版本升级后升级自定义模块期间执行某些操作时非常有用。
- --load <modules>¶
要加载的服务器级模块列表。这些模块用于提供不一定与特定数据库绑定的功能。这与安装时总是绑定到特定数据库的模块(即大多数 Odoo 插件模块)不同。默认为
base,web。
- -c <config>, --config <config>¶
备用 配置文件 的路径,也可以通过
ODOO_RC环境变量设置。如果两者都未设置,则会查找以下位置:Posix 系统:
/home/$USER/.config/odoo/odoo.conf/etc/xdg/xdg-cinnamon/odoo(XDG 站点,可能有所不同)/home/$USER/.odoorc
Windows 系统:
C:Users%USERNAME%AppDataLocalodooodooodoo.confC:ProgramDataodooodooodoo.confodoo-bin可执行文件旁边的odoo.conf文件C:Users%USERNAME%.odoorc
- -D <data-dir-path>, --data-dir <data-dir-path>¶
存储 Odoo 数据的目录路径(例如 filestore、会话)。如果未指定,Odoo 会回退到预定义路径。在 Unix 系统上,该路径由
$XDG_DATA_HOME环境变量定义,或为~/.local/share/Odoo或/var/lib/Odoo。
- --with-demo¶
在新数据库中安装演示数据。
- --without-demo¶
无论是在新数据库中,还是在使用演示数据的数据库中安装新模块时,都不安装演示数据,这是默认行为。
- --skip-auto-install¶
当请求安装新模块时跳过自动安装模块。此选项对开发很有用,可用于检查已安装的模块是否间接依赖于自动安装的模块。
- --pidfile=<pidfile>¶
用于存储服务器 pid 的文件路径
- --stop-after-init¶
在服务器初始化后停止服务器。
- --geoip-city-db <path>¶
GeoIP City 数据库文件的绝对路径。
- --geoip-country-db <path>¶
GeoIP Country 数据库文件的绝对路径。
测试¶
- --test-enable¶
在模块安装后运行测试
- --test-file <file>¶
运行一个 Python 测试文件
- --test-tags [-][tag][/module][:class][.method]¶
以逗号分隔的规格列表,用于筛选要执行的测试。设置后即启用单元测试。
示例:
--test-tags :TestClass.test_func,/test_module,external-用于指定是包含还是排除与此规格匹配的测试。标签将匹配通过
tagged()装饰器添加到类上的标签(所有 测试类 都带有standard和at_install标签,除非显式移除,请参阅装饰器文档)。*将匹配所有标签。在包含模式下如果省略标签,其值为
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_replica_host <hostname>¶
副本数据库服务器的主机,未设置或为空时禁用
- --db-filter <filter>¶
为 Web 界面隐藏不匹配
<filter>的数据库。该过滤器是 regular expression,并有以下附加规则:%h会被替换为请求所使用的完整主机名。%d会被替换为请求所使用的子域名,但www除外(因此域名odoo.com和www.odoo.com都会匹配数据库odoo)。这些操作区分大小写。添加选项
(?i)可匹配所有数据库(因此使用(?i)%d的域名odoo.com会匹配数据库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 上更新 base 模块。如果数据库 11seconddatabase 不存在,则会创建该数据库并安装基础模块
$ odoo-bin --db-filter ^11.*$ --database 11firstdatabase,11seconddatabase -u base
将访问限制到名称以 11 开头的数据库,并在其中一个数据库 11firstdatabase 上更新 base 模块。如果数据库 11seconddatabase 不存在,则会创建该数据库并安装基础模块
警告
此选项不影响定时任务工作进程;如果未指定 –database,定时任务工作进程将在所有可用数据库上运行
- --db-template <template>¶
从数据库管理界面创建新数据库时,使用指定的 template database。默认为
template0。
- --db-system <db>¶
指定用于总线与维护等共享系统操作的数据库。默认为
postgres。
- --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¶
创建新数据库时尝试启用 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。
国际化¶
- --load-language <languages>¶
指定要加载的翻译所对应的语言(以逗号分隔)
- --i18n-overwrite¶
在更新模块或导入 CSV 或 PO 文件时覆盖现有的翻译术语。
高级选项¶
开发者功能¶
- --dev <feature,feature,...,feature>¶
以逗号分隔的功能列表。仅用于开发目的,请勿在生产环境中使用。可用的功能包括:
all: xml、reload、qweb、access 的别名xml: 直接从 xml 文件读取 QWeb 模板,而不是从数据库读取。一旦模板在数据库中被修改,在下次更新/初始化之前将不再从 xml 文件读取。特别注意,使用此选项时模板不会被翻译。reload: 当 python 文件被更新时重启服务器(取决于所使用的文本编辑器,可能无法检测到)qweb: 当节点包含t-debug='debugger'时在 QWeb 模板求值过程中中断werkzeug: 发生异常时在前端页面显示完整的 tracebackreplica: 模拟--db_replica_host,但连接到与--db_host相同的数据库服务器,这样就可以测试只读功能,而无需设置副本数据库。access: 当 AccessError 导致 403 - Forbidden HTTP 响应时,在旁边记录 traceback。
HTTP¶
- --no-http¶
不启动 HTTP 或长轮询工作进程(仍可能启动 定时任务 工作进程)
警告
如果设置了
--test-enable,则此选项无效,因为测试需要可访问的 HTTP 服务器
- --http-interface <interface>¶
HTTP 服务器监听的 TCP/IP 地址,默认为
0.0.0.0(所有地址)
- -p <port>¶
- --http-port <port>¶
HTTP 服务器监听的端口,默认为 8069。
- --gevent-port <port>¶
在多进程或 gevent 模式下用于 websocket 连接的 TCP 端口,默认为 8072。默认(线程)模式下不使用。
- --proxy-mode¶
通过 Werkzeug’s proxy support 启用
X-Forwarded-*头的使用。如果请求中缺少
X-Forwarded-Host,则会忽略所有X-Forwarded-*头。它始终从
X-Forwarded-For链的最后一项获取真实 IP。如果链中还有其他必须忽略的可信代理,请使用诸如 nginx 的 set_real_ip_from 等指令相应配置 Web 服务器。X-Forwarded-Proto和X-Forwarded-Host用于更新请求的根 URL,而根 URL 又会在管理员身份验证成功后用于更新web.base.url系统参数。此系统参数用于生成当前数据库的所有链接;请参阅 数据库的 Web 基本 URL。警告
在反向代理场景之外 不得 启用代理模式
记录¶
默认情况下,Odoo 会显示所有 level 为 INFO、WARNING 和 ERROR 的日志。所有日志无论级别如何都输出到 stderr。有多种选项可用于将日志重定向到其他目标并自定义详细程度。
- --logfile <file>¶
将日志输出发送到指定文件而不是
stderr。在 Unix 上,该文件 可以由外部日志轮转程序管理 并在被替换时自动重新打开
- --log-config <file>¶
使用
dictConfig()配置日志系统,该配置存储在 JSON 或 TOML 文件中。默认情况下,如果使用此项,所有日志选项和内置配置都会被忽略;可以在
dictConfig的根级将keep_odoo_default设为 true,以便之后仍正常处理日志选项。
- --syslog¶
记录到系统事件日志:Unix 上的 syslog 和 Windows 上的事件日志。
两者均不可配置
20.0 版后已移除: 请改用
--log-config。
- --log-db <dbname>¶
记录到指定数据库的
ir.logging模型(ir_logging表)。该数据库可以是 “current” PostgreSQL 中的数据库名称,也可以是用于日志聚合等用途的 a PostgreSQL URI。
- --log-handler <handler-spec>¶
LOGGER:LEVEL,在所提供的LEVEL上启用LOGGER,例如odoo.models:DEBUG将启用模型中DEBUG级别及以上的所有日志消息。冒号
:是必需的可以省略日志记录器以配置根(默认)处理器
如果省略级别,则日志记录器设为
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>¶
用于更轻松地在特定日志记录器上设置预定义级别的快捷方式。”real” 级别(
critical、error、warn、debug)会设置在odoo和werkzeug日志记录器上(debug除外,它只设置在odoo上)。Odoo 还提供了一些调试伪级别,它们适用于不同的日志记录器集合:
debug_sql将 SQL 日志记录器设置为
debug等效于
--log-sqldebug_rpc将
odoo和 HTTP 请求日志记录器设置为debug等效于
--log-level debug --log-requestdebug_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>¶
每个工作进程允许的最大虚拟内存(以字节为单位)。如果超出限制,该工作进程会在当前请求结束时被终止并回收。
默认为 2048MiB (2048*1024*1024B)。
- --limit-memory-hard <limit>¶
虚拟内存的硬性限制(以字节为单位),任何超出限制的工作进程都会被立即终止,而不等待当前请求处理结束。
默认为 2560MiB (2560*1024*1024B)。
- --limit-time-cpu <limit>¶
防止工作进程在每个请求中使用的 CPU 时间超过 <limit> 秒。如果超出限制,该工作进程会被终止。
默认为 60。
- --limit-time-real <limit>¶
防止工作进程处理请求的时间超过 <limit> 秒。如果超出限制,该工作进程会被终止。
与
--limit-time-cpu的区别在于这是 “wall time”(实际耗时)限制,例如包含 SQL 查询。默认为 120。
配置文件¶
大多数命令行选项也可以通过配置文件指定。大多数情况下,它们使用相似的名称,去掉前缀 -,并将其他 - 替换为 _,例如 --db-template 变为 db_template。
有些转换不符合该模式:
--db-filter变为dbfilter--no-http对应http_enable布尔值日志预设(所有以
--log-开头的选项,但--log-handler和--log-db除外)只是向log_handler添加内容,请直接在配置文件中使用它--smtp存储为smtp_server--database存储为db_name
默认配置文件为 $HOME/.odoorc,可通过 --config 覆盖。指定 --save 会将当前配置状态保存回该文件。与命令行对应的配置项需要在 [options] 节中指定。
以下是一个示例文件:
[options]
db_user=odoo
dbfilter=odoo
shell - 打开 Shell¶
Odoo 命令行还允许将 Odoo 作为 Python 控制台环境启动,从而可以直接与 orm 及其功能交互。由于运行 shell 会启动服务器,配置文件中的选项同样生效。
$ odoo-bin shell
示例
为所有联系人的名称添加感叹号:
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()
重要
默认情况下,shell 以事务模式运行。这意味着退出 shell 时对数据库所做的任何更改都会回滚。要提交更改,请使用 env.cr.commit()。
- --shell-file <init_script.py>¶
指定在 shell 启动后运行的 Python 脚本。覆盖环境变量
PYTHONSTARTUP。
- --shell-interface (ipython|ptpython|bpython|python)¶
指定 shell 模式下首选使用的
REPL。启动此 shell 时env变量已初始化,以便访问ORM和其他 Odoo 模块。
更多内容
db - 管理数据库¶
此命令允许通过命令行界面管理数据库。各项操作通过子命令指定。
对于所有子命令,均可使用以下用于配置环境的选项:
db init - 初始化数据库¶
此命令会创建新数据库并安装 base 模块。你可以指定主公司的语言和国家/地区。
$ odoo-bin db init <database>
- database¶
要初始化的数据库名称。
- --with-demo¶
在初始化的数据库中安装演示数据。
- --force¶
在初始化新数据库之前,如果该数据库已存在,则将其删除。
- --country <country_iso_code>¶
要在主公司上设置的国家/地区代码
- --language <language_code>¶
实例的默认语言,默认为
en_US
- --username <password>¶
新数据库的用户名,默认为
admin
- --password <password>¶
新数据库的密码,默认为
admin
db dump - 保存数据库转储¶
创建转储文件。
$ odoo-bin db dump <database> <dump_path>
- database¶
要转储的数据库名称。
- dump_path¶
(可选)数据库将转储到指定路径。默认转储到
stdout。
- --format <zip | dump>¶
如果提供,则使用指定的格式转储数据库。支持的格式有
zip(默认)和dump(pg_dump 格式)。
- --no-filestore¶
如果提供,则转储 zip 数据库时不包含文件存储
db load - 加载数据库转储¶
将转储文件加载到 Odoo 数据库中,转储文件可以是一个 URL。
$ odoo-bin db load <database> <dump_file>
- database¶
(可选)要从此转储创建的数据库名称。如果未提供,则使用不带扩展名的转储文件名。
- dump_file¶
要加载的
.zip或pg_dump文件。
- -f,--force¶
在加载新数据库之前,如果该数据库已存在,则将其删除。
- -n,--neutralize¶
恢复数据库后对其进行中和处理。
db duplicate - 复制数据库¶
复制数据库,包括文件存储。
$ odoo-bin db duplicate <source> <target>
- source¶
源数据库名称。
- target¶
目标数据库名称。
- -n,--neutralize¶
恢复数据库后对其进行中和处理。
- -f,--force¶
在初始化新数据库之前,如果目标数据库已存在,则将其删除。
db rename - 重命名数据库¶
将数据库从旧名称重命名为新名称。
$ odoo-bin db rename <source> <target>
- source¶
数据库的当前名称。
- target¶
数据库的新名称。
- -f,--force¶
在重命名源数据库之前,如果目标数据库已存在,则将其删除。
db drop - 删除数据库¶
$ odoo-bin db drop <database>
- database¶
要删除的数据库名称。
i18n - 国际化¶
此命令包含多个子命令,可用于在 Odoo 实例上导入或导出国际化文件并设置语言。
对于所有子命令,均可使用以下用于配置环境的选项:
注解
语言代码必须遵循 XPG (POSIX) 区域设置格式。
要列出可用的代码,可以查询数据库来搜索:
$ psql -d <dbname> -c "SELECT iso_code FROM res_lang ORDER BY iso_code"
更多内容
示例
$ odoo-bin i18n loadlang -l en # English (U.S.)
$ odoo-bin i18n loadlang -l es es_AR # Spanish (Spain, Argentina)
$ odoo-bin i18n loadlang -l sr@latin # Serbian (Latin)
i18n import - 导入 i18n 文件¶
此命令导入提供的 .po 或 .csv 格式的翻译文件。默认情况下只会添加新条目,但你可以选择覆盖现有术语。所有文件都必须对应指定的语言。
$ odoo-bin i18n import <files> --overwrite --language <language_code>
- files¶
- 要导入的文件列表。允许的扩展名:
.po、.csv。
- -l,--language¶
(必填)文件中翻译的语言代码。
- -w,--overwrite¶
导入时覆盖现有翻译。
i18n export - 导出 i18n 文件¶
此命令将 Odoo 数据库中模块的现有翻译术语导出为多种格式:.po、.pot、.tgz、.csv。对于 .po 和 .pot 文件,它们将创建在其所属模块的 i18n/ 文件夹下。如果指定输出参数,则只能选择一种语言,并且所有输出都将使用该语言。.tgz 输出格式会将所有输出归档到单个文件中。
$ odoo-bin i18n export <modules> --languages <language_codes>
- modules¶
要从中导出国际化文件的模块列表。
- -l,--languages <languages>¶
要导出的语言代码列表,
pot表示模板(默认)。
- -o,--output¶
- 包含所有提供的模块翻译的单一输出文件路径。允许的扩展名:
.po、.pot、.tgz、.csv如果提供-,内容将作为.po文件写入 stdout。此选项启用时只允许一种语言。
i18n loadlang - 加载语言¶
此命令将一种可用语言加载到 Odoo 数据库中并激活它。
$ odoo-bin i18n loadlang <languages>
- languages¶
要安装的语言的语言代码。
module - 管理模块¶
此命令包含多个子命令,可用于在 Odoo 实例上安装、卸载和升级模块。还有一个命令可以强制将演示数据安装到数据库中。
对于所有子命令,可使用以下选项:
module install - 安装模块¶
此命令会立即安装所有选定的模块。
在安装模块之前,需要在 PostgreSQL 实例上创建并初始化 Odoo 数据库,例如使用 db init - 初始化数据库 命令。
$ odoo-bin module install <modules>
- modules¶
要安装的模块列表。
module uninstall - 卸载模块¶
此命令会立即卸载所有选定的模块。
$ odoo-bin module uninstall <modules>
- modules¶
要卸载的模块列表。
module upgrade - 升级模块¶
此命令会立即升级所有选定的模块。
$ odoo-bin module upgrade <modules>
- modules¶
要升级的模块列表。使用
base或all表示所有已安装模块。
- --outdated¶
仅更新磁盘上具有较新版本的模块。如果
all用作modules参数,则适用于所有已安装模块。
module forcedemo - 强制安装演示数据¶
此命令强制安装 演示数据
警告
安装后无法撤销,因此你可能需要先使用 db dump 命令保存数据库备份
此命令没有其他选项。
neutralize - 中和数据库¶
Odoo 命令行也可以中和数据库。该命令必须配合数据库选项运行。
$ odoo-bin --addons-path <PATH,...> neutralize -d <database>
- -d <database>, --database <database>¶
指定你想要中和的数据库名称。
- --stdout¶
输出中和 SQL 而不是执行它
更多内容
scaffold - 生成模块脚手架¶
脚手架是指自动创建骨架结构以简化引导过程(在 Odoo 中即创建新模块)。虽然不是必需的,但它可以避免设置基本结构和查询所有初始要求的繁琐工作。
可通过 odoo-bin scaffold 子命令使用脚手架。
$ odoo-bin scaffold my_module /addons/
- name (required)¶
要创建的模块名称,可能会以多种方式改写以生成程序化名称(例如模块目录名、模型名等)
- destination (default=current directory)¶
在其中创建新模块的目录,默认为当前目录
这将在目录 /addons/ 中创建模块 my_module。
duplicate - 复制记录¶
Odoo Duplicate 允许复制给定数据库中的现有数据。当需要大表时,可用于测试和基准测试。复制过程会为某些字段引入变化,以遵守 UNIQUE 约束等。它还会遵循 x2Many 关系。
更多内容
如需使用蓝图从头生成合成数据,请参阅 populate - 填充数据库。
$ odoo-bin duplicate -d <database> --models res.partner,account.move --factors 1000
- -d <database>¶
要在其中复制记录的数据库名称
- --models <models>¶
要复制的模型列表。出现两次的模型只会复制一次。
- --factors <factors>¶
复制系数列表。系数
3表示模型的记录将被复制 3 次,达到原始数量的 4 倍。如果某个模型缺少系数,则使用列表中的最后一个系数。
- --sep <separator>¶
用于生成记录名称的分隔符
populate - 填充数据库¶
根据存储在 populate.blueprint 中的蓝图生成合成数据。
注解
运行此命令之前,必须在目标数据库上安装 populate 模块。
更多内容
本节仅记录命令行接口。有关如何定义和构建蓝图、编写自定义生成器以及使用高级 populate 功能的信息,请参阅 Populate。
$ odoo-bin populate -d <database> -b my_module.my_blueprint
- -d <database>, --database <database>¶
目标数据库。
- -b <blueprint>, --blueprint <blueprint>¶
蓝图名称或完整 xmlid。除非使用了
--resume,否则此项为必填。
- --seed <seed>¶
用于确定性生成的种子。
- --scale <factor>¶
将蓝图中所有记录数量乘以该系数。默认值:
1。
- -j <workers>, --jobs <workers>¶
并行工作进程数。使用
auto可占用所有可用的 CPU 线程。默认值:1。
- --resume [session_id]¶
恢复最近一次未完成的会话,或恢复指定的会话。
- --profile¶
为本次运行中的每个可执行 populate 作业保存性能分析器追踪记录。
cloc - 统计代码行数¶
Odoo Cloc 是一款用于统计以 Python、Javascript、CSS、SCSS 或 XML 编写的相关代码行数的工具。它可作为对额外模块的维护服务定价时的粗略指标。
$ odoo-bin cloc -c config.conf -d my_database
- -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 选项。
- -v, --verbose¶
显示每个文件所统计行数的详细信息。
已处理的文件¶
使用 --database 选项时¶
Odoo Cloc 会统计给定数据库中已安装的额外模块的每个文件的行数。此外,它还会统计直接在数据库中创建或导入的服务器动作和自定义计算字段的 Python 行数。最后,它还会统计 Javascript、CSS 和 SCSS 文件的代码行数,以及来自已导入模块的 QWeb 视图的行数。
默认情况下,某些文件不计入统计:
清单文件(
__manifest__.py或__openerp__.py)文件夹
static/lib的内容文件夹
tests和static/tests中定义的测试文件夹
migrations和upgrades中定义的迁移脚本清单文件的
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 选项 相同。否则,它会统计所有文件。
识别额外模块¶
为了区分标准模块和额外模块,Odoo Cloc 使用以下启发式规则:位于与 base、web 或 web_enterprise 标准模块相同的父目录中的模块(按真实文件系统路径,即跟随符号链接后)被视为标准模块。其他模块则被视为额外模块。
错误处理¶
某些文件无法被 Odoo Cloc 统计。这些文件会在输出末尾报告。
超出最大文件大小¶
Odoo Cloc 会拒绝任何大于 25MB 的文件。通常,源文件小于 1 MB。如果某个文件被拒绝,它可能是:
包含大量数据的生成的 XML 文件。应在清单文件中将其排除。
应放置在
static/lib文件夹中的 JavaScript 库。
语法错误¶
Odoo Cloc 无法统计存在语法问题的 Python 文件的代码行数。如果某个额外模块包含此类文件,应修复它们以便该模块能够加载。如果模块在存在这些文件的情况下仍能正常工作,说明它们很可能未被加载,因此应从模块中删除,或至少通过 cloc_exclude 在清单文件中排除。
obfuscate - 混淆数据库¶
此命令提供了一种快速简便的方式来混淆 Odoo 实例中的部分数据,主要用于教学目的,或为支持团队制作快速视频,帮助技术人员避免泄露敏感信息。
警告
必须谨慎使用此命令,因为将数据传输给第三方之前用它来完全匿名化数据 并非 一种安全的方法。图像、PDF 附件、金额以及许多其他信息可能不会被混淆,从而导致敏感信息泄露。在共享数据之前需要彻底审查,以确保不会暴露任何敏感信息。
混淆是对称的,因此可以使用相同的密码来解除混淆。
此命令同样支持 server 命令的所有可用配置。
$ odoo-bin obfuscate --pwd=<password>
- --pwd <password>¶
(必填)用于对称混淆内容的密码。
- --unobfuscate¶
如果希望解除混淆而不是进行混淆。
- --fields <fields>¶
以逗号分隔的
table.column条目列表,用于指定要混淆或解除混淆的项。
- --file <file>¶
包含要混淆或解除混淆的
table.column条目列表的文件。
- --exclude¶
以逗号分隔的
table.column条目列表,用于指定不进行混淆或解除混淆的项。
- --allfields¶
仅在选中
--unobfuscate时使用。尝试对所有字段解除混淆。这比手动指定字段要慢。
- --vacuum¶
仅在选中
--unobfuscate时使用。解除混淆后,完全清空已混淆的表并回收未使用的磁盘空间。
- --pertablecommit¶
混淆后,每张表提交一次。
这样可以避免大型事务超时,或是在出错后遭遇回滚。
- -y,--yes¶
不请求手动确认。
仅在您确信在未经审查的情况下将数据库共享给第三方不会泄露敏感信息时才使用。
deploy - 远程部署模块¶
此命令将模块上传到远程 Odoo 服务器并安装。它比手动连接到远程服务器更简单,并且不需要对托管 Odoo 实例的机器拥有完全访问权限,只需 Odoo 管理员凭据。
$ odoo-bin deploy <path> <url> --db <dbname> --login <login> --password <password>
注解
前提条件:
服务器必须已安装
base_import_module模块。使用
--login选项指定的用户必须具有管理员权限。
- path¶
要部署的模块的路径
- url¶
(可选)模块要部署到的服务器的 URL(默认
http://localhost:8069)
- db <dbname>¶
数据库名称(如果服务器未使用
--db-filter选项)
- --login <username>¶
具有管理员权限的用户的名称(默认
admin)
- --password <password>¶
具有管理员权限的用户的密码(默认
admin)
- --verify-ssl¶
验证服务器的 SSL 证书,以确保目标实例是合法的。
- --force¶
如果模块已安装,则重新初始化该模块。它将更新
noupdate="1"的记录。
upgrade_code - 重写源代码¶
此命令使用 odoo/upgrade_code 文件夹中的脚本来重写整个源代码。它用于在处理大型代码迁移和向前移植时承担繁重的工作。
注解
所有脚本都会尽最大努力迁移源代码,但它们并非万灵药。
它接受 --addons-path 选项。
$ odoo-bin upgrade_code --from 18.0 --to 19.0 --dry-run
- --script <path>¶
运行单个脚本
- --from <version>¶
运行从此版本(含)开始的所有脚本
- --glob <glob>¶
筛选要重写的文件,默认为所有文件(
**/*)
- --dry-run¶
列出将被重写的文件,但不应用更改
代码升级脚本¶
脚本必须命名为 {version}-{name}.py,并且必须提供一个 upgrade 函数,该函数接受单个 file_manager 参数且没有返回值。
file_manager 参数是一个 files 序列,其中的文件具有 3 个属性和一些辅助方法:
path:文件在文件系统中的路径(pathlib.Path)。addon:文件所属的插件模块。content:文件可重写的内容(惰性求值)。print_progress(current, total):输出当前进度。
示例
def upgrade(file_manager):
files = (file for file in file_manager if file.path.suffix == '.py')
for fileno, file in enumerate(files, start=1):
file.content = file.content.replace(..., ...)
file_manager.print_progress(fileno, len(files))