模块三 欧姆基础模块
本模块为欧姆网络开发的一系列解决方案的基础核心模块.
功能简介
1. 报表动作支持第二名称
本模块新增了动态修改报表名称的功能, 用户可以在报表动作中定义一个昵称, 对于要实现根据记录中某些条件而显示不同的报表名称, 则在对应的模型下重载_compute_action_show_nickname方法:
def _compute_action_show_nickname(self):
self.action_show_nickname = True
然后需要在显示的视图中新增action_show_nickname字段:
```
### 2. 弹窗提示
为了解决odoo原生弹窗比较简单的问题, 本模块新增了已下两种弹窗方式:
#### 文本提示
应用场景为某些执行动作完成后弹窗提示.
```python
self.show_message("标题","提示文本")
确认弹窗
如果需要用户确认是否完成的动作,就需要使用下面的这种确认对话框的方式:
self.show_confirm_message("确认弹窗","确定要执行这个动作吗?")
如果确定, 那么会回调本模型的_action_pops_up_confirm方法.
需要注意的是:
- 如果上下文模型中定义了回调方法,那么会优先使用上下文模型中的方法.
- 如果回调方法是类方法, 那么在返回时,需要使用with_context方法将active_model的类名放到环境变量中.
关于回调方法
16.2+版本以后, 支持自定义回调方法, 用户可以在弹窗上下文中指定需要回调的方法:
@api.model
def action_syn_wework_employees(self):
"""show confirm dialog sync employees"""
return self.with_context(active_model=self._name,call_back='_sync_employees').show_confirm_message("Sync employees","Are you sure to sync employees from wework?")
例如我们在企业微信模块中就使用了这样的回调方法, 如果用户没有指定回调,那么将会调用默认的回调方法: _action_pops_up_confirm
3. 唯一性限制
为了方便开发者快速添加唯一性校验, 本模块在Char类型得字段中新增了唯一性属性unique:
name = fields.Char("丛书名称", unique=True)
使用了该属性以后, 如果新增或编辑了重复的值, 那么系统会给出提示:
12. 表单页面状态按钮快速返回视图动作
我们在表单视图中经常会碰到状态按钮(state button), 用来显示关联单据的数量, 以及快速打开相关的视图.
通常的写法如下:
action = self.env.ref("stock.action_picking_tree_all").read()[0]
if self.picking_count == 1:
action['res_id'] = self.picking_ids.id
action['views'] = [
(self.env.ref("stock.view_picking_form").id, 'form')]
else:
action['domain'] = [('id', 'in', self.picking_ids.ids)]
return action
为了简化开发工作量提高代码复用率, 本模块将此类的动作进行了提炼, 直接使用get_view_action方法返回动作即可, get_view_action会自动根据传入的模型和记录集找到合适的页面及动作返回.
例如上面的代码在简化以后,可以写作:
return self.picking_ids.get_view_action()