我真的很想了解Odoo的访问权限和规则,一切看起来都很美观和完美,但事实上它几乎不可能让它们正常工作。
我所指的是这种情况的一个例子(我曾经有过这种情况,我不得不避免使用规则来解决它):Are Odoo rules working OK actually?
现在我面临另一个问题:我使用多公司,并且有一些用户的行为会影响其他用户。例如,我有这个公司树:
Main Company
|_ Company A
|_ Company B
用户管理员属于主要公司。然后我有一个名为 Forvas 的用户,该用户属于 Company B ,只能与该公司的客户/供应商合作。现在,我从主要公司移动管理员,以使用公司A 。从那一刻开始,用户 Forvas 无法看到公司B 的客户或供应商(他之前能做的事情),他只是得到了访问权限错误:res.users - 操作:读取每次他试图打开他希望看到的任何客户或供应商。您可以告诉我,用户管理员必须始终在主公司中,并且永远不会让自己与其他人一起工作,所以我会尊重这一点,但是问题是其他可以使用 Main Company 的用户在开始与其他公司(例如 Company A )合作时也会引发同样的错误。例如,名为 The Chief 的用户可以与所有公司合作,但他决定使用 Company A 。好吧,用户 Forvas 停止看到 Company B 的客户/供应商,当他试图打开任何人时,他获得了访问权限错误...
然后我在fields.py
文件中添加了一些日志行,试图找到问题所在。然后我意识到我自己制造的一个领域正在解决问题,但这个领域并不是那么罕见。它是Float
的计算,在res.partner
模型中声明。我已经修改了字段以简化它(尽管现在代码是一个nosense,因为字段总是值0.0)。
@api.multi
@api.depends('whatever')
def _compute_available_credit(self):
for partner in self:
partner.available_credit = 0.0
available_credit = fields.Float(
compute='_compute_available_credit',
string='Available credit',
)
我在whatever
内写了@api.depends
,它不是一个字段,但是我在那里写的字段并不重要,计算方法总会引发错误。< / p>
但是,如果我在字段声明中注释compute
参数,问题就会消失......
那么,任何人都可以解释为什么吗?我厌倦了处理Odoo安全问题,我很确定每个人都必须有这些意想不到的行为,因为它们偶尔会发生在我身上。
答案 0 :(得分:0)
我试图重现您提到的错误并失败。
您收到的错误(访问权限错误:res.users - Operation :)表明您的用户不允许查看模型res.users。 客户(res.partner)与res.users(销售人员)之间存在许多关系。您的自定义字段是否依赖于此字段?
所以我最好的猜测是,有一些规则阻止您的用户(Forvas)查看其他公司的用户,并且您的客户记录映射到其他公司(Admin)的用户。
从设置/技术/安全/记录规则和设置/技术/安全/访问控制列表中检查用户的访问规则。