跳至内容
菜单
此问题已终结
2 回复
4817 查看

I tried this with several security group settings but it's not working.

I created new group and added the user to this group, then I created a new security group with this domain= [('supplier', '=', False)] and put the group in. 

Nothing happends, it only works when I don't define a group and let this rule global.


How can I fix this ? Is this an Odoo Bug?

形象
丢弃

It should work, but can you explain exactly what you did?

最佳答案

This might be what is causing your problem.  Odoo 12 introduced a Record Rule that was designed to limit access to “private addresses”. It’s on the Contacts model (res.partner).

There are a pair of Record Rules:

1.  Allow access to “private addresses” for selected users

[('type', '=', 'private')]

2. Allow access for all users to other “non-private addresses”

['|', 
('type', '!=', 'private'),
('type', '=', False)
]

This Record Rule grants access to all internal users through the “Internal User” access group. This group is inherited by all application access groups.

The problem is that the second Record Rule effectively overrides other Record Rules for Contacts.

  • If you have created a Record Rules to limit access to suppliers:
    • a user who should not have access to suppliers would be granted access (because type will be blank).
      • They would also be able to access private addresses for customers and other types of contact!

That’s because access is granted if the conditions for ANY of the Group-specific rules are satisfied – and these can come from multiple access groups.

The solution is either to remove the two “private address” Record Rules or to replace them with several rules that cover all the combinations.

This would also explain why a global record rule would work.

https://odootricks.tips/record-rules

形象
丢弃
相关帖文 回复 查看 活动
0
10月 19
3504
2
12月 22
6647
0
3月 15
3798
0
4月 24
1560
3
3月 22
17459