Zum Inhalt springen
Menü
Sie müssen registriert sein, um mit der Community zu interagieren.
Diese Frage wurde gekennzeichnet
2 Antworten
881 Ansichten

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
Verwerfen
Beste Antwort

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
Verwerfen
Beste Antwort

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

<field name="presales_ids" groups="[module].[group_name]"/>
Avatar
Verwerfen
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.

Verknüpfte Beiträge Antworten Ansichten Aktivität
1
Juni 25
1026
1
Juni 25
1163
1
Juni 25
880
1
Juli 25
901
3
Juli 25
1276