欧姆基础模块

本模块为欧姆网络开发的一系列解决方案的基础核心模块.

功能简介

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设置进行排序。

results matching ""

    No results matching ""