gpt4 book ai didi

permissions - 基于工作流状态的不同权限

转载 作者:行者123 更新时间:2023-12-05 00:34:13 25 4
gpt4 key购买 nike

我需要根据对象的工作流状态为对象设置不同的权限。例如,只有 state=draft 时,'manager group' 可以编辑对象,而 state=validated 时,'super manager group' 也可以编辑它。

似乎不可能使用 ir.model.access我正在评估是否可以使用 ir.rule 来完成。 .好像不是...

有没有official获得这个的方法还是我需要实现这个功能(也许通过在 ir.model.access 机器中添加一个条件)。

最佳答案

默认情况下,这是不可能的 ir.model.access ,因为此权限模型旨在充当 CRUD 操作上的简单 Unix 权限,并且它是静态定义的,每个模型和每个组。

您可以使用 ir.rule 来实现类似的功能。 ,因为它实现了基于字段值的动态每记录访问控制。通过仅在 write 上定义一组规则和 unlink操作和基于state字段,您将能够阻止某些组修改某些状态下的记录。通过使用始终为真规则的技术 [(1,'=',1)]然后,您可以为拥有“ super 访问”组的用户放宽非全局规则。另见此 answer .
但是,此选项将有重要的警告:

  • 注意不要让这些规则适用于 read ,因为它会使记录完全消失,并且通常会对您的流程造成严重破坏
  • 当规则生效时,界面不会变为只读,如果您想将字段和按钮设为只读,您必须通过 attrs 找到一种方法来指定它。以取决于用户组的方式。另见此 Launchpad question .
  • UI 中的保存按钮不会被禁用
  • ir.rule情况下的标准错误报告限制不是很清楚,所以肯定会迷惑用户(注意:7.0 正在改进)

  • 如您所见,使用 ir.rule用于此目的的过滤器远非完美的解决方案,您首先需要为上述问题找到合适的解决方案。

    最终,您可能会更轻松地为此实现自己的逻辑,在 ORM 原始 API 方法中插入新机制: fields_view_get (用于根据用户组使字段动态只读)和 CRUD 方法(用于实际限制操作)

    关于permissions - 基于工作流状态的不同权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10994216/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com