from odoo import models, api from odoo.osv import expression class StockWarehouse(models.Model): _inherit = 'stock.warehouse' @api.model def _search(self, domain, offset=0, limit=None, order=None): if not self.env.su and self.env.user.allowed_warehouse_ids: domain = expression.AND([domain or [], [('id', 'in', self.env.user.allowed_warehouse_ids.ids)]]) return super()._search(domain, offset=offset, limit=limit, order=order) class StockPickingType(models.Model): _inherit = 'stock.picking.type' @api.model def _search(self, domain, offset=0, limit=None, order=None): if not self.env.su and self.env.user.allowed_picking_type_ids: domain = expression.AND([domain or [], [('id', 'in', self.env.user.allowed_picking_type_ids.ids)]]) return super()._search(domain, offset=offset, limit=limit, order=order) class StockLocation(models.Model): _inherit = 'stock.location' @api.model def _search(self, domain, offset=0, limit=None, order=None): if not self.env.su and self.env.user.allowed_location_ids: domain = expression.AND([domain or [], [('id', 'in', self.env.user.allowed_location_ids.ids)]]) return super()._search(domain, offset=offset, limit=limit, order=order) class MrpWorkcenter(models.Model): _inherit = 'mrp.workcenter' @api.model def _search(self, domain, offset=0, limit=None, order=None): if not self.env.su and self.env.user.allowed_workcenter_ids: domain = expression.AND([domain or [], [('id', 'in', self.env.user.allowed_workcenter_ids.ids)]]) return super()._search(domain, offset=offset, limit=limit, order=order) class ApprovalCategory(models.Model): _inherit = 'approval.category' @api.model def _search(self, domain, offset=0, limit=None, order=None): if not self.env.su and self.env.user.allowed_approval_category_ids: domain = expression.AND([domain or [], [('id', 'in', self.env.user.allowed_approval_category_ids.ids)]]) return super()._search(domain, offset=offset, limit=limit, order=order)