45 lines
2.1 KiB
Python
45 lines
2.1 KiB
Python
from odoo import models, fields, api
|
|
|
|
class ResUsers(models.Model):
|
|
_inherit = 'res.users'
|
|
|
|
is_pos_user = fields.Boolean(string="Is POS User?", default=False)
|
|
is_kitchen_user = fields.Boolean(string="Is Kitchen User?", default=False)
|
|
is_admin_user = fields.Boolean(string="Is Admin User?", default=False)
|
|
|
|
@api.model_create_multi
|
|
def create(self, vals_list):
|
|
pos_user_group = self.env.ref('point_of_sale.group_pos_user', raise_if_not_found=False)
|
|
if pos_user_group:
|
|
for vals in vals_list:
|
|
if vals.get('is_kitchen_user') or vals.get('is_pos_user') or vals.get('is_admin_user'):
|
|
group_commands = vals.get('group_ids', [])
|
|
if isinstance(group_commands, list):
|
|
group_commands.append((4, pos_user_group.id))
|
|
vals['group_ids'] = group_commands
|
|
|
|
res = super().create(vals_list)
|
|
if any(vals.get('is_pos_user') or vals.get('is_kitchen_user') or vals.get('is_admin_user') for vals in vals_list):
|
|
self.env.registry.clear_cache()
|
|
return res
|
|
|
|
def write(self, vals):
|
|
pos_user_group = self.env.ref('point_of_sale.group_pos_user', raise_if_not_found=False)
|
|
if pos_user_group and ('is_kitchen_user' in vals or 'is_pos_user' in vals or 'is_admin_user' in vals):
|
|
for user in self:
|
|
is_kitchen = vals.get('is_kitchen_user', user.is_kitchen_user)
|
|
is_pos = vals.get('is_pos_user', user.is_pos_user)
|
|
is_admin = vals.get('is_admin_user', user.is_admin_user)
|
|
if (is_kitchen or is_pos or is_admin):
|
|
if pos_user_group not in user.group_ids:
|
|
super(ResUsers, user).write({'group_ids': [(4, pos_user_group.id)]})
|
|
else:
|
|
if pos_user_group in user.group_ids:
|
|
super(ResUsers, user).write({'group_ids': [(3, pos_user_group.id)]})
|
|
|
|
res = super().write(vals)
|
|
if 'is_pos_user' in vals or 'is_kitchen_user' in vals or 'is_admin_user' in vals:
|
|
self.env.registry.clear_cache()
|
|
return res
|
|
|