Skip ke Konten
Menu
Pertanyaan ini telah diberikan tanda
2 Replies
1147 Tampilan

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
Buang
Jawaban Terbai

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
Buang
Jawaban Terbai

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

<field name="presales_ids" groups="[module].[group_name]"/>
Avatar
Buang
Penulis

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.

Post Terkait Replies Tampilan Aktivitas
1
Jun 25
1366
1
Jun 25
1448
1
Jun 25
1099
1
Jul 25
1207
3
Jul 25
1687