odoo模块升级至17的关键点-后台py-界面xml-前端owl.js升级总结

​odoo17从2023年10月发布至今基本已过半年,细节基本完善,就我们在官方及中文应用商店的销售情况来看,odoo17的模块下载购买已占据了至少一半,可以新版本已经有了不错的应用,广为客户接受。

​我司数百个模块也已有大半升级到了odoo17版,以下我们从开发者角度,总结下从odoo其它版本如16升级17的关键要点,主要包括模块定义,后台.py文件,界面xml文件,前端owl开发等几大方面。业务逻辑变化也比较多,主要集中在电商网站及门店POS等,后续起新文详述。

​先给个odoo17模块升级的脑图总结


odoo模块升级至17的关键点-后台py-界面xml-前端owl.js升级总结

 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"

odoo模块升级至17的关键点-后台py-界面xml-前端owl.js升级总结

  • 设置Block中的中调整:多用app,setting标签

odoo模块升级至17的关键点-后台py-界面xml-前端owl.js升级总结

  • 不在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

详情参考 官方文档 https://www.odoo.com/documentation/17.0/developer/reference/frontend/framework_overview.html

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

https://apps.odoo.com/apps/modules/17.0/app_web_widget_ztree/

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

 

odoo17对接企业微信最新2024版-实现服务商多公司SAAS