From 9fdc9f89a45a462221cf52d810253df19b2af79c Mon Sep 17 00:00:00 2001 From: Bertrand Chenal Date: Tue, 21 Oct 2008 12:49:04 +0200 Subject: [PATCH 1/4] Added name_search on order point --- order_point.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/order_point.py b/order_point.py index 1b1dbc5276..2e0e0f5989 100644 --- a/order_point.py +++ b/order_point.py @@ -119,6 +119,23 @@ class OrderPoint(OSV): res.append((op.id, "%s@%s" % (op.product.name, op.location.name))) return res + def name_search(self, cursor, user, name='', args=None, operator='ilike', + context=None, limit=None): + if not args: + args=[] + ids = False + names = name.split('@',1) + query = [('product.template.name', operator, names[0])] + args + if len(names) == 1 or not names[1]: + ids = self.search( cursor, user, query, limit=limit, context=context) + else: + location_args = self.search_location( + cursor, user, 'location', [('location', operator, names[1])], + context=context) + ids = self.search( + cursor, user, query + location_args, limit=limit, context=context) + return self.name_get(cursor, user, ids, context) + def get_location(self, cursor, user, ids, name, args, context=None): location_obj = self.pool.get('stock.location') res = {} From 639339bf1db57c5d4dbb11658b98d73dca8eb380 Mon Sep 17 00:00:00 2001 From: Bertrand Chenal Date: Tue, 21 Oct 2008 12:54:32 +0200 Subject: [PATCH 2/4] Added name_search on purchase request --- purchase_request.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/purchase_request.py b/purchase_request.py index 90ae58aaeb..2bfde68997 100644 --- a/purchase_request.py +++ b/purchase_request.py @@ -53,6 +53,21 @@ class PurchaseRequest(OSV): res.append((pr.id, "%s@%s" % (pr.product.name, pr.warehouse.name))) return res + def name_search(self, cursor, user, name='', args=None, operator='ilike', + context=None, limit=None): + if not args: + args=[] + ids = False + names = name.split('@',1) + query = [('product.template.name', operator, names[0])] + args + if len(names) == 1 or not names[1]: + ids = self.search( cursor, user, query, limit=limit, context=context) + else: + warehouse_arg = [('warehouse', operator, names[1])] + ids = self.search( + cursor, user, query + warehouse_arg, limit=limit, context=context) + return self.name_get(cursor, user, ids, context) + def default_company(self, cursor, user, context=None): company_obj = self.pool.get('company.company') if context is None: From 639e664e4e83a22969a0e86764d0268b4a277c4b Mon Sep 17 00:00:00 2001 From: Bertrand Chenal Date: Tue, 21 Oct 2008 12:59:48 +0200 Subject: [PATCH 3/4] purchase request: added select=1 on warehouse --- purchase_request.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/purchase_request.xml b/purchase_request.xml index 541c6b0643..ba25930db6 100644 --- a/purchase_request.xml +++ b/purchase_request.xml @@ -45,7 +45,7 @@ - + From 0a58390192f99998d59f810c6dd6ebe528b74afc Mon Sep 17 00:00:00 2001 From: Bertrand Chenal Date: Tue, 21 Oct 2008 13:23:40 +0200 Subject: [PATCH 4/4] Fix name_search when args contains sub-queries --- order_point.py | 8 ++++---- purchase_request.py | 3 +-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/order_point.py b/order_point.py index 2e0e0f5989..b48eb26c95 100644 --- a/order_point.py +++ b/order_point.py @@ -123,9 +123,8 @@ class OrderPoint(OSV): context=None, limit=None): if not args: args=[] - ids = False - names = name.split('@',1) - query = [('product.template.name', operator, names[0])] + args + names = name.split('@', 1) + query = ['AND', ('product.template.name', operator, names[0]), args] if len(names) == 1 or not names[1]: ids = self.search( cursor, user, query, limit=limit, context=context) else: @@ -133,7 +132,8 @@ class OrderPoint(OSV): cursor, user, 'location', [('location', operator, names[1])], context=context) ids = self.search( - cursor, user, query + location_args, limit=limit, context=context) + cursor, user, ['AND', query, location_args], limit=limit, + context=context) return self.name_get(cursor, user, ids, context) def get_location(self, cursor, user, ids, name, args, context=None): diff --git a/purchase_request.py b/purchase_request.py index 2bfde68997..fbdeaa8c16 100644 --- a/purchase_request.py +++ b/purchase_request.py @@ -57,9 +57,8 @@ class PurchaseRequest(OSV): context=None, limit=None): if not args: args=[] - ids = False names = name.split('@',1) - query = [('product.template.name', operator, names[0])] + args + query = ['AND', ('product.template.name', operator, names[0]), args] if len(names) == 1 or not names[1]: ids = self.search( cursor, user, query, limit=limit, context=context) else: