feat: Extend access restrictions for picking types and locations to include warehouse-based rules and remove redundant _search override.
This commit is contained in:
parent
9dfecde29e
commit
ebb4ea65db
@ -26,15 +26,15 @@ class StockWarehouse(models.Model):
|
|||||||
class StockPickingType(models.Model):
|
class StockPickingType(models.Model):
|
||||||
_inherit = 'stock.picking.type'
|
_inherit = 'stock.picking.type'
|
||||||
|
|
||||||
@api.model
|
# @api.model
|
||||||
def _search(self, domain, offset=0, limit=None, order=None, **kwargs):
|
# def _search(self, domain, offset=0, limit=None, order=None, **kwargs):
|
||||||
if self.env.context.get('bypass_user_restriction'):
|
# if self.env.context.get('bypass_user_restriction'):
|
||||||
return super()._search(domain, offset=offset, limit=limit, order=order, **kwargs)
|
# return super()._search(domain, offset=offset, limit=limit, order=order, **kwargs)
|
||||||
if not self.env.su and not self.env.user.has_group('base.group_system'):
|
# if not self.env.su and not self.env.user.has_group('base.group_system'):
|
||||||
allowed_ids = get_allowed_ids(self.env, 'res_users_stock_picking_type_rel', 'picking_type_id', self.env.user.id)
|
# allowed_ids = get_allowed_ids(self.env, 'res_users_stock_picking_type_rel', 'picking_type_id', self.env.user.id)
|
||||||
if allowed_ids:
|
# if allowed_ids:
|
||||||
domain = Domain(domain or []) & Domain([('id', 'in', allowed_ids)])
|
# domain = Domain(domain or []) & Domain([('id', 'in', allowed_ids)])
|
||||||
return super()._search(domain, offset=offset, limit=limit, order=order, **kwargs)
|
# return super()._search(domain, offset=offset, limit=limit, order=order, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -28,7 +28,7 @@
|
|||||||
<field name="domain_force">
|
<field name="domain_force">
|
||||||
(
|
(
|
||||||
[(1, '=', 1)] if user.env.context.get('bypass_user_restriction') or user.has_group('base.group_system') else
|
[(1, '=', 1)] if user.env.context.get('bypass_user_restriction') or user.has_group('base.group_system') else
|
||||||
[('id', 'in', user.allowed_picking_type_ids.ids)] if user.allowed_picking_type_ids else [(1, '=', 1)]
|
['|', ('id', 'in', user.allowed_picking_type_ids.ids), ('warehouse_id', 'in', (user.allowed_warehouse_ids + user.allowed_location_ids.warehouse_id).ids)] if (user.allowed_picking_type_ids or user.allowed_warehouse_ids or user.allowed_location_ids) else [(1, '=', 1)]
|
||||||
)
|
)
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
@ -41,7 +41,7 @@
|
|||||||
<field name="domain_force">
|
<field name="domain_force">
|
||||||
(
|
(
|
||||||
[(1, '=', 1)] if user.env.context.get('bypass_user_restriction') or user.has_group('base.group_system') else
|
[(1, '=', 1)] if user.env.context.get('bypass_user_restriction') or user.has_group('base.group_system') else
|
||||||
['|', '|', ('id', 'in', user.allowed_location_ids.ids), ('id', 'child_of', user.allowed_location_ids.ids), ('id', 'parent_of', user.allowed_location_ids.ids)] if user.allowed_location_ids else [(1, '=', 1)]
|
['|', '|', '|', ('id', 'in', user.allowed_location_ids.ids), ('id', 'child_of', user.allowed_location_ids.ids), ('id', 'parent_of', user.allowed_location_ids.ids), ('warehouse_id', 'in', (user.allowed_warehouse_ids + user.allowed_location_ids.warehouse_id).ids)] if (user.allowed_location_ids or user.allowed_warehouse_ids) else [(1, '=', 1)]
|
||||||
)
|
)
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user