Connector 有4个不同的addons:
- quenue_job
- component
- component_event
- connector
Migrating Jobs:
job现在变得更加完整,可以被认为是在models中的methods来使用而不在是以前那种单独存在的方法。另一个改变是python路径改变了因为jobs被放在单独的addon中了
image.png观察结论:
- 可以从实例中看到现在的@job跟@related_action装饰器可以在models中使用。
- 由于job能定义在models中,可加api装饰器所以使用self能替代以前的session,model_name,bindling_id
- 新版本的import_record可以直接传入参数作为records
- the action of a related action is now the name of a method on the queue.job model
- 如果需要在多个models中共享一个job。可以通过使用AbstractModel,并且添加利用_inherit继承来共享
invocation of a job(调用job)
image.png观察结论
- 不需要再进行import
- ConnectorSession 被丢弃了
- job的参数不在跟method参数混合起来
- 当一个job被browse使用时,这个job会被这个记录的一个实例执行
Migrating Events(迁移事件)
事件现在被component_event addon处理
Triggering(触发) an event
image.png观察结论
- imports不再被需要。调用参数只需要把参数传入odoo.addons.component_event.component_event.components.event.CollectedEvents.notify()
- event 的名字必须以'on_'作为开头
Listening to an event
image.png观察结论
- listerners 现在变为 components
- 一个listener Component 可能包含多个listener methods
- 必须继承'base.event.listener'或者一个它的子类
- 检查context中是否存在key 'connector_no_export' 能被装饰器odoo.addons.component_event.skip_if()来代替
Listening to an event only for some Models
image.png观察结论
- 通过加入_apply_on 列表 来添加需要监听的Models名称
Migrating Components (迁移组件)
Backends
image.pngimage.png
观察结论
- Backend Models中版本是可选的
- Backend Models 是基于Component's Collections的
Inheritance
image.pngimage.png
观察结论
- 现在的继承与odoo中的继承类似(没有_inherits 这个继承方式)
- 所有的组件都需要用过python中的类的继承方式继承AbstractComponent或者Component
- 需要在名字前加上前缀(因为是全局的名字)
- the name of the classes has no effect
- 类似Odoo的Models,一个组件能继承多个组件通过 _inherit 一个list列表
- 所有的组件都继承了base组件
Entrypoint for working with components (组件工作的入口点)
image.pngimage.png
观察结论
- And when you are already in a Component, refer to Find a component
Find a component
image.png- model 通过_apply_on属性来进行对比
- Backend 通过_collection属性进行比较
- _usage 指明来组件的目的,可以理解为被用来进行查找
- 通常,_usage跟_collection 是会通过_inherit直接从父类组件中获取。所以不需要对每个组件都进行重写
-
一个很好的方法是写一个接口(抽象类) 。
image.png
网友评论