显示/隐藏列表中没有的字段

时间:2019-12-28 19:12:41

标签: python list odoo odoo-12

我的概念是我在Odoo上有5种不同的访问级别。

我想检查登录用户是否在列表中(列表是由自动操作创建的),如果是,则显示字段,否则将其隐藏。

我的代码:

list_of_users= []
if record.user_id.partner_id.id: #level 1 user add on list
  list_of_users.append(record.user_id.partner_id.id)

if record.user_id.sale_team_id.user_id.partner_id.id: #level 2 user add on list
  list_of_users.append(record.user_id.sale_team_id.user_id.partner_id.id)

if record.user_id.sale_team_id.regional_manager_id.partner_id.id: #level 3 user add on list
  list_of_users.append(record.user_id.sale_team_id.regional_manager_id.partner_id.id)

user_ids = record.env['res.users'].search([])
flag = record.env['res.users'].search([('groups_id','ilike','L4')])

for user_ids in flag: #level 4 and 5 users add on list
  user_record = record.env['res.users'].browse(user_ids)
  list_of_users.append(user_ids.partner_id.id)

record.update({'x_partner_follower_custom': [(6, 0, list_of_users)]})

在视图上,我在要显示/隐藏的字段上使用attrs="{'invisible': [('x_partner_follower_custom', '=', False)]}"

x_partner_follower_custom:many2很多合作伙伴字段

输出样本: enter image description here

您可以看到即时通讯使用户返回查看,但是attrs似乎设置不正确。知道如何解决吗?

1 个答案:

答案 0 :(得分:0)

首先,该字段不应为stored,并且必须每次都对其进行计算,因为它会根据当前记录的depends的值user除去store

   @api.depends('x_partner_follower_custom')
   def user_exist(self):
        for rec in self:
             if rec.x_partner_follower_custom and self.env.user.partner_id.id in rec.x_partner_follower_custom.ids:
                 rec.your_boolean_field_name = True
             else:
                 rec.your_boolean_field_name = False 

因此该字段取决于x_partner_follower_custom,而当前登录的用户不应为stored