Pular para o conteúdo
Menu
Esta pergunta foi sinalizada
2 Respostas
871 Visualizações

In my (inherited) crm.lead model, I have a one2many field called presales_ids.

I want all presales_ids records to visible to all users who have access to the lead.

However, in the presales model list view, I want to restrict the visibility of records based on the user group. Using record rules will hide these records from the presales users viewing the lead form as well.

How can I do this?


Odoo v18 Community Edition

Avatar
Cancelar
Melhor resposta

Hi,

You can override the presales_ids field to always fetch data with sudo(), so it ignores record rules when viewed through a Lead:

from odoo import models, fields, api


class CrmLead(models.Model):

    _inherit = 'crm.lead'


    presales_ids = fields.One2many(

        'presales.model',

        'lead_id',

        string="Presales",

        compute="_compute_presales_ids",

        store=False

    )


    @api.depends('id')

    def _compute_presales_ids(self):

        for lead in self:

            lead.presales_ids = self.env['presales.model'].sudo().search([('lead_id', '=', lead.id)])


Hope it helps.

Avatar
Cancelar
Melhor resposta

Use the groups attribute in your view on the field in question, i.e.

<field name="presales_ids" groups="[module].[group_name]"/>
Avatar
Cancelar
Autor

I don't want to restrict visibility of the one2many presales_ids field on the lead.
I want to restrict visibility of presales records in the list view of the presales model.

Publicações relacionadas Respostas Visualizações Atividade
1
jun. 25
1022
1
jun. 25
1157
1
jun. 25
872
1
jul. 25
898
3
jul. 25
1263