Files
partner-tools/partner_profiles_portal/models/res_partner.py

59 lines
1.9 KiB
Python

# Copyright 2022 Elabore (https://elabore.coop)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import logging
from odoo import _, api, fields, models
_logger = logging.getLogger(__name__)
class res_partner(models.Model):
_inherit = "res.partner"
edit_structure_profiles = fields.Boolean(
string="Manage structure's profiles"
)
can_edit_structure_profiles_ids = fields.Many2many(
"res.partner",
relation="res_partner_main_profile_rel",
column1="partner_id",
column2="profile_id",
store=True,
compute="_compute_can_read_edit",
string="Can edit struture profiles",
)
child_main_contact_ids = fields.Many2many(
"res.partner",
relation="res_partner_child_contacts_rel",
column1="partner_id",
column2="profile_id",
store=True,
compute="_compute_can_read_edit",
string="Can read structure profiles",
)
odoo_user_id = fields.Many2one(
"res.users",
compute="_compute_odoo_user_id",
string="Associated Odoo user",
store=True,
)
@api.depends(
"other_contact_ids",
"other_contact_ids.edit_structure_profiles",
"structure_position_ids",
"structure_position_ids.edit_structure_profiles",
)
def _compute_can_read_edit(self):
for partner in self:
partner.can_edit_structure_profiles_ids = partner.structure_position_ids.filtered(
"edit_structure_profiles"
).mapped("contact_id")
partner.child_main_contact_ids = partner.structure_position_ids.mapped("contact_id")
@api.depends("user_ids")
def _compute_odoo_user_id(self):
for partner in self:
partner.odoo_user_id = self.env["res.users"].search(
[("partner_id", "=", partner.id)], limit=1
)