From 5ddeadc9212b179f4d1b6a8dfec894fcc7a08c3d Mon Sep 17 00:00:00 2001 From: GabbasovDinar Date: Tue, 17 Dec 2024 14:47:16 +0500 Subject: [PATCH] [IMP] product_multi_barcode: Performance Improve search speed when searching products by name. Task: 4183 --- product_multi_barcode/models/product_barcode.py | 1 + product_multi_barcode/models/product_product.py | 6 ++---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/product_multi_barcode/models/product_barcode.py b/product_multi_barcode/models/product_barcode.py index 2115d8630ebf..a86fe3c0a732 100644 --- a/product_multi_barcode/models/product_barcode.py +++ b/product_multi_barcode/models/product_barcode.py @@ -16,6 +16,7 @@ class ProductBarcode(models.Model): name = fields.Char( string="Barcode", required=True, + index="trigram", ) sequence = fields.Integer( default=0, diff --git a/product_multi_barcode/models/product_product.py b/product_multi_barcode/models/product_product.py index 1a4408827ffe..cd63a49c34d8 100644 --- a/product_multi_barcode/models/product_product.py +++ b/product_multi_barcode/models/product_product.py @@ -14,6 +14,7 @@ class ProductProduct(models.Model): comodel_name="product.barcode", inverse_name="product_id", string="Barcodes", + auto_join=True, ) barcode = fields.Char( string="Main barcode", @@ -60,11 +61,8 @@ def _search(self, domain, *args, **kwargs): def _get_barcode_domain(self, sub_domain, domain): barcode_operator = sub_domain[1] barcode_value = sub_domain[2] - barcodes = self.env["product.barcode"].search( - [("name", barcode_operator, barcode_value)] - ) domain = [ - ("barcode_ids", "in", barcodes.ids) + ("barcode_ids.name", barcode_operator, barcode_value) if x[0] == "barcode" and x[2] == barcode_value else x for x in domain