欧姆基础模块
本模块为欧姆网络开发的一系列解决方案的基础核心模块.
功能简介
1. 报表动作支持第二名称
本模块新增了动态修改报表名称的功能, 用户可以在报表动作中定义一个昵称, 对于要实现根据记录中某些条件而显示不同的报表名称, 则在对应的模型下重载_compute_action_show_nickname方法:
def _compute_action_show_nickname(self):
self.action_show_nickname = True
然后需要在显示的视图中新增action_show_nickname字段:
<field name="action_show_nickname" invisible="1"/>
2. 弹窗提示
支持版本 13.0
为了解决odoo原生弹窗比较简单的问题, 本模块新增了已下两种弹窗方式:
文本提示
应用场景为某些执行动作完成后弹窗提示.
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)
使用了该属性以后, 如果新增或编辑了重复的值, 那么系统会给出提示:
如果想要替换提示文本,则可以在字段定义时使用exception属性指定定制化文本.
4. 搜索视图扩展域支持
默认情况下,在搜索控制视图中,我们只能进行当前用户的过滤:
[('user_id','=', uid)]
而不支持其他变量,如当前公司等。 本模块扩展了此功能,用户可以方便的直接使用如下变量:
- company_id: 当前公司
5. 表单页面状态按钮快速返回视图动作
我们在表单视图中经常会碰到状态按钮(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()
6. 控制表单视图中的X2many字段的列表分页数量
设置方法: 设置-欧姆-个性化中心-表单分页数量:
修改该分页数量以后,系统中所有的表单中的X2Many字段的分页数量将会改变。
7. Qweb报表中货币类型字段去除货币符号
在t-options中设置symbol为False即可。
<span t-field="line.price_unit" t-options="{'symbol':False}"/>
8. 过滤读取功能
默认情况下,使用read方法,如果碰到没有权限的数据记录,系统将进行弹窗提示。为了优化这个使用效果,我们改进了read方法,针对指定的模型,默认将过滤掉没有权限的记录,只显示有权限的记录。
使用方法: 到技术-设置-模型中,勾选过滤读取属性。
9. 列表视图分组根据模型设置排序
原生情况下,树形列表分组数据不会根据模型的_order属性设置进行排序,我们这里对此进行了优化:
没有特别指定的情况下,树形列表分组动作会根据模型的_order设置进行排序。