gpt4 book ai didi

python - res.partner 上 `write` 的高级访问权限

转载 作者:行者123 更新时间:2023-12-01 09:27:21 25 4
gpt4 key购买 nike

通过参数 (vals) 提供给 write() 的数据可以从方法 check_access_rights 中访问吗?

我继承自 res.partner 并重写方法 check_access_rights ,目的是允许对 res.partner 没有写入权限的用户进行更新(该合作伙伴的)child_ids 如果该子项是由该用户创建的 (create_uid = user.id) 。我希望能够在某个地方(在方法 writecheck_access_rights 中)实现这个伪代码:

if `the user belongs to a group "GroupX"` and `user tries to only update field "child_ids" with records that are created by that user`
then `allow this write operation on res.partner`
else `raise AccessError`

最佳答案

让用户(来自“Group X”)修改由他创建的 res.partner 对象,并让修改由任何人创建的 res.partner 对象上的 child_ids:

首先创建一个组“Group X”,其权限为:a) res.partner 上的 r,w,c,u ; b) ir.property 上的 r,w,c 。

然后创建一个继承自 res.partner 的类并重写方法 write

# -*- coding: utf-8 -*-

class InheritedResPartner(models.Model):
"""Description"""
_inherit = 'res.partner'

@api.multi
def write(self, vals):
is_in_group = 'Group X' in map(lambda x: x.name, self.env.user.groups_id)
if is_in_group:
operation = 'write'
owns_record = self.create_uid == self.env.user

if owns_record:
True
else:
allowed = True

# Do all checks further and set `allowed` to either True or False
...<omitted intentionaly> put your logic here
#

if not allowed:
raise AccessError(_('The requested operation cannot be completed due to security restrictions. Please contact your system administrator.\n\n(Document type: %s, Operation: %s)') % (self._description, operation))
return super(InheritedResPartner, self).write(vals)

注意:我们授予 res.partner 的完全权限,但如果检测到不需要的操作,我们将覆盖写入方法并引发 AccessError。

关于python - res.partner 上 `write` 的高级访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50267256/

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