pos_loyalty_member_custom/models/res_users.py

61 lines
2.8 KiB
Python

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)