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

7688a9c0e6fdb40801c9f6b54555bcab.jpeg

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


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

f6a58845493b2629c89033fdeb086c59.jpeg

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"

6b5fcad6272e8d6cf7ac7f8c47eea7ff.jpeg

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

8eedc6ad6eb315cdac887fb19f412ece.jpeg

  • 不在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原类无需给新命名,但要自行处理相关依赖级别


Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐