在线编辑器

通过 在线编辑器 视图,您可以通过网络浏览器编辑构建的源代码。它还可以打开终端、Python 控制台、Odoo shell 控制台和 Jupyter 笔记本 。

在线编辑器概览

您可以通过 分支标签页、构建下拉菜单,或在构建的 URL 中添加 /odoo-sh/editor (例如 https://odoo-addons-master-1.dev.odoo.com/odoo-sh/editor )来访问该构建的编辑器。

编辑源代码

工作目录构成:

.
├── home
│    └── odoo
│         ├── src
│         │    ├── odoo                Odoo Community source code
│         │    │    └── odoo-bin       Odoo server executable
│         │    ├── enterprise          Odoo Enterprise source code
│         │    ├── themes              Odoo Themes source code
│         │    └── user                Your repository branch source code
│         ├── data
│         │    ├── filestore           Database attachments, as well as the files of binary fields
│         │    └── sessions            Visitors and users sessions
│         └── logs
│              ├── install.log         Database installation logs
│              ├── odoo.log            Running server logs
│              ├── update.log          Database updates logs
│              └── pip.log             Python packages installation logs

您可以编辑开发分支和预发布分支构建的源代码(/src 目录下的文件);正式运行分支构建的源代码为只读,因为在正式运行服务器上应用本地更改并非良好实践。

注解

打开文件:在文件浏览器面板中双击目标文件,即可在编辑器中打开并编辑。保存修改,点击菜单路径 文件 ‣ 保存 ,或使用快捷键 Ctrl+S 。

若你修改并保存 Odoo 服务器 addons 路径下的 Python 文件,Odoo 会自动检测到变更并重启,修改会立即生效。

Python 文件修改后即时生效示意

但是,如果您的更改存储在数据库中,例如字段标签或视图,则必须更新相关模块才能应用更改。要更新当前1 打开文件的模块,请转到 Odoo ‣ 更新当前模块 。

通过编辑器更新当前模块

小技巧

也可在终端中执行以下命令来更新指定模块:

odoo-bin -u <comma-separated module names> --stop-after-init

提交并推送变更

提交并将更改推送到 GitHub 仓库:

  1. 进入 文件 ‣ 新建 ‣ 终端 打开终端。

  2. 将目录更改为 ~/src/user 。

cd ~/src/user
  1. 说明你的身份。

git config --global user.email "you@example.com" && git config --global user.name "Your Name"
  1. 暂存您的更改。

git add
  1. 提交您的更改。

git commit
  1. 推送变更。

git push https HEAD:<branch>
  • https 是 HTTPS GitHub 远程仓库的名称(例如:https://github.com/username/repository.git)。

  • HEAD 指向你最新提交的版本引用;

  • <branch> 需替换为你要推送变更的目标分支名称(若在开发分支的构建任务中操作,通常填写当前分支名即可)。

执行命令后,系统会提示你输入 GitHub 用户名和密码,输入完成后按回车键确认即可。

提交并推送变更的命令示例说明

小技巧

若为 GitHub 账户启用了双因素认证,可以创建一个 个人访问令牌 并将其用作密码。只需 授予仓库(repo)权限 即可。

注解

  • 不支持通过 SSH 方式认证,出于安全考虑,您的 SSH 私钥不会存储在构建容器中。同时,由于您是通过网页浏览器访问在线编辑器,SSH 代理也无法转发私钥,因此无法使用 SSH 完成身份验证。

  • 源码目录 ~/src/user 并非检出到某一分支,而是处于分离头指针状态。这是因为构建任务基于特定版本,而非 “分支” 运行。也就是说,同一分支下可存在多个基于不同版本的构建任务。

一旦您的修改被推送,根据您的 分支推送行为, 一个新的构建可能会被创建。您可以继续在您推送的编辑器中工作,因为它的版本将与创建的新版本相同。不过,请务必使用分支的最新版本来编辑构建。

控制台

您可以打开 Python 控制台,即 IPython 交互式 shell 。使用这些 Python 控制台(而非终端内的 IPython shell),可以利用其 富文本显示功能 ,以 HTML 格式显示对象。

示例

Pretty 类以清晰易读的方式显示列表。

Pretty 类示例

小技巧

使用 pandas 可以显示:

  • CSV 文件的单元格

    pandas 处理 CSV 示例
  • 图表

    pandas 图表示例

您还可打开 Odoo Shell 控制台,用于调试数据库的 Odoo 注册表和模型方法,也可直接读写数据库中的记录。

警告

Odoo Shell 控制台中的事务会自动提交 —— 这意味着您对记录的修改会直接同步到数据库中。例如,若您修改了某用户的姓名,该变更会立即更新到数据库。因此,在正式运行数据库上使用 Odoo Shell 控制台时务必谨慎操作。

在 Odoo Shell 控制台中,可通过 env 对象调用数据库注册表中的模型,例如:env['res.users'] (调用用户模型)。

env['res.users'].search_read([], ['name', 'email', 'login'])
[{'id': 2,
'login': 'admin',
'name': 'Administrator',
'email': 'admin@example.com'}]