odoo17常见升级问题

通用问题

模型名变更

字段变更

方法名变更

方法参数变更

xml数据结构定义变化

xml的id变更

view视图变化,导致xpath路径出差

template结构变化,,导致xpath路径出差,或者id不存在

升16问题

前端owl的架构变化

升17问题

前端

标签弃置、改动:

attrs弃置

attrs="{'invisible': ['|', '&', ('is_company','=', True),('parent_id', '=', False),('company_name', '!=', False),('company_name', '!=', '')]}"

可变为

 invisible="((is_company and not parent_id) or company_name) and company_name != ''"

【原attrs内的'='在新逻辑里为==:'a','=','123'   a=='123'】

states弃置

states="pending,error"

可变为

 invisible=“state not in ['pending','error'] ”

<attribute>标签改动

<attribute name="attrs">{'invisible': [('is_system', '=', False)]}</attribute>

可变为

<attribute name="invisible">not is_system</attribute>

res.partner模块删除gender性别字段

stock库存模块有问题,安装之后有时候打开设置会报错

运行当中会莫名报错NameError: name 'GEOIP_EMPTY_COUNTRY' is not defined

mail.template 去掉了字段report_template,report_name

看板视图取消了quick_add属性

web/views/graph/colors.js 改到了web/core/colors/colors.js

ir.ui.view模型取消了field_parent字段

odoo.exceptions 去掉了Warning异常处理

模版 id=“portal_layout”中去掉了<div class="o_portal_my_security mt-3">这个div 原div

<div class="row justify-content-between mt-4">下的布局移动到了 模版id=“side_content

”下面

<button icon="fa-code">按钮需加入title以及class="oe_stat_button" 否则日志会报提醒

<button icon="fa-code" type="object"  title="导出 xml 源" class="oe_stat_button" name="export_xml_source" />

设置 res_config_settings_view_form试图 新增设置视图逻辑变更

(源码搜索 ref="base.res_config_settings_view_form" 可查看新设置视图逻辑)

例:

<div class="..." data-string="Anodoo Develop" string="Anodoo Develop" >

<div id="develop_setting">

<h2>开发设置</h2>

<div class="row mt16 o_settings_container">

<div class="col-12 col-lg-6 o_setting_box" id="default_is_replace" title=" 默认是否替换开发目录">

...........

</div>

</div>

</div>

</div>

变为

<app data-string="Anodoo Develop" string="开发设置" name="Anodoo" groups="base.group_system"  >

<block title="开发设置" name="develop_setting">

<setting string="默认是否替换开发目录"  help="默认是否替换开发目录"          id="default_is_replace">

..........

</setting>

</block>

</app>

Manifest文件

  • 版本:不再支持4位版本号,精简掉最开头的大版本号,格式只能为`x.y`, `x.y.z`。比如原来为 16.24.03.30,现在要将大版本号去掉,使用 24.03.30
  • hook变化,只有一个env参数
def post_init_hook(env)
def pre_init_hook(env)
def uninstall_hook(env)

.py后台python开发文件

  • Fields定义:不再支持 states 处理只读与否,一般放到 xml 中处理特殊的只读属性
  • name_get: 改为  _compute_display_name
  • 模型变更:具体业务模块中比较。核心的如 
mail.channel 改为 discuss.channel

.xml界面文件升级,可在rng中查看

  • 关键属性: Since 17.0, the "attrs" and "states" attributes are no longer used. 直接使用py表达式 invisible="is_mega_menu != True"
  • 设置Block中的中调整:多用app,setting标签
  • 不在root级别支持 groups标签,可直接删除,在xml内部fields等定义中处理
  • widget提级:widget提级,可以不绑定在field直接使用,比如 tree中直接与数据无关的使用
  • tree视图: 增加 open_form_view,可以特殊处理查看详情。可以直接挂载widget,不被field包裹。不可见调整为 column_invisible。
  • graph视图:柱图增加处理 cumulated_start
  • calendar视图:quick_add 变为 quick_create 且可以通过quick_create_view_id指定视图
  • pivot视图:无变化
  • search视图:无变化

.js前端升级owl2

详情参考 官方文档 Framework Overview — Odoo 17.0 documentation

细节较多,可参考官方市场 app_web_widget_ztree 模块,基本全面应用新 js 规范

Many2One Hierarchy Parent Child M2o Selector, zTree 树状下拉选择器 | Odoo Apps Store

  • web端全面使用owl2,es规范
  • website端可使用旧snippets,同时可以使用owl
  • 取消registerPatch,统一用类的 patch处理。如: patch(类.prototype, {xxx})
  • patch原类无需给新命名,但要自行处理相关依赖级别

Odoo Attrs 替代品

由于 Odoo 在 v17 中将 attrs 更改为(不再有 attrs),我创建了这个小脚本来帮助您直接将 XML 文件中的所有 attrs 替换为 XML 中的相应属性。

依赖关系

只需安装

pip install beautifulsoup4 lxml

或者

pip install -r requirements.txt

用法

启动Python脚本

python3 replace_attrs.py

它会询问您根目录以检查XML文件。您可以给出项目的绝对路径。

如果没有给出参数,它将使用当前目录。

对于每个文件,脚本将询问您是否要将所有attrs=and替换为标签中states=的相关attrs(invisible,readonly,required,column_invisible) - (不可见串联或创建)(对于每个标签的所有实例)。states

除非您在开头选择“y”进行自动替换(不要询问每个文件)

引用自 GitHub - pierrelocus/odoo-attrs-replace: Need help in Odoo ? Nalios is there for you!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值