feat: add is_admin_user field to res.users and update POS access and restriction logic
This commit is contained in:
parent
bc0487f65a
commit
6b5ea11884
@ -6,6 +6,7 @@ class PosConfig(models.Model):
|
||||
is_pos_user_restricted = fields.Boolean(compute='_compute_is_pos_user_restricted')
|
||||
|
||||
def _compute_is_pos_user_restricted(self):
|
||||
is_pos = self.env.user.is_pos_user
|
||||
user = self.env.user
|
||||
is_restricted = user.is_pos_user or user.is_admin_user
|
||||
for config in self:
|
||||
config.is_pos_user_restricted = is_pos
|
||||
config.is_pos_user_restricted = is_restricted
|
||||
|
||||
@ -5,30 +5,32 @@ class ResUsers(models.Model):
|
||||
|
||||
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'):
|
||||
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') for vals in 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):
|
||||
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)
|
||||
if (is_kitchen or is_pos):
|
||||
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:
|
||||
@ -36,7 +38,7 @@ class ResUsers(models.Model):
|
||||
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:
|
||||
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
|
||||
|
||||
|
||||
@ -8,6 +8,7 @@
|
||||
<xpath expr="//page[@name='access_rights']/group[1]" position="after">
|
||||
<group string="Special POS/Kitchen Restrictions">
|
||||
<field name="is_pos_user"/>
|
||||
<field name="is_admin_user"/>
|
||||
<field name="is_kitchen_user"/>
|
||||
</group>
|
||||
</xpath>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user