from odoo import models, api class ResUsers(models.Model): _inherit = 'res.users' def copy(self, default=None): portal_template = self.env.ref('base.template_portal_user_id', raise_if_not_found=False) if portal_template and self.id == portal_template.id: default = default or {} # Find OT company or fallback to first active company active_company = self.env['res.company'].search([('name', '=', 'OT')], limit=1) if not active_company: active_company = self.env['res.company'].search([('active', '=', True)], limit=1) if active_company: default['company_id'] = active_company.id default['company_ids'] = [(6, 0, [active_company.id])] return super().copy(default=default) @api.model_create_multi def create(self, vals_list): portal_group = self.env.ref('base.group_portal', raise_if_not_found=False) active_company = self.env['res.company'].search([('name', '=', 'OT')], limit=1) if not active_company: active_company = self.env['res.company'].search([('active', '=', True)], limit=1) for vals in vals_list: is_portal = False if portal_group: group_commands = vals.get('group_ids', []) for cmd in group_commands: if cmd[0] == 4 and cmd[1] == portal_group.id: is_portal = True elif cmd[0] == 6 and portal_group.id in cmd[2]: is_portal = True company_id = vals.get('company_id') if company_id: company = self.env['res.company'].browse(company_id) if not company.active: if active_company: vals['company_id'] = active_company.id vals['company_ids'] = [(6, 0, [active_company.id])] elif is_portal and active_company: vals['company_id'] = active_company.id vals['company_ids'] = [(6, 0, [active_company.id])] return super().create(vals_list) def write(self, vals): if 'company_id' in vals: company = self.env['res.company'].browse(vals['company_id']) if not company.active: active_company = self.env['res.company'].search([('name', '=', 'OT')], limit=1) if not active_company: active_company = self.env['res.company'].search([('active', '=', True)], limit=1) if active_company: vals['company_id'] = active_company.id if 'company_ids' not in vals: vals['company_ids'] = [(6, 0, [active_company.id])] return super().write(vals)