From bc247e2e645df996e1bfb4a3cf59866aac05c1e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 23 Jun 2009 17:06:28 +0200 Subject: [PATCH] Fix ilike search when there is no value --- .../view_form/view/form_gtk/many2many.py | 7 ++++-- .../view_form/view/form_gtk/many2one.py | 22 ++++++++++------- .../view_form/view/form_gtk/one2many.py | 20 +++++++++------- .../view_form/view/form_gtk/reference.py | 11 +++++---- .../window/view_form/view/list_gtk/parser.py | 24 +++++++++++++------ 5 files changed, 55 insertions(+), 29 deletions(-) diff --git a/tryton/gui/window/view_form/view/form_gtk/many2many.py b/tryton/gui/window/view_form/view/form_gtk/many2many.py index ea0e0203c6..14bdfd2551 100644 --- a/tryton/gui/window/view_form/view/form_gtk/many2many.py +++ b/tryton/gui/window/view_form/view/form_gtk/many2many.py @@ -79,9 +79,12 @@ class Many2Many(WidgetInterface): value = self.wid_text.get_text() try: + if value: + dom = [('rec_name', 'ilike', '%' + value + '%'), domain] + else: + dom = domain ids = rpc.execute('model', self.attrs['relation'], 'search', - [('rec_name', 'ilike', '%' + value + '%'), domain], 0, - _LIMIT, None, context) + dom , 0, _LIMIT, None, context) except Exception, exception: common.process_exception(exception, self._window) return False diff --git a/tryton/gui/window/view_form/view/form_gtk/many2one.py b/tryton/gui/window/view_form/view/form_gtk/many2one.py index adc34f2ba0..f1d943f9ca 100644 --- a/tryton/gui/window/view_form/view/form_gtk/many2one.py +++ b/tryton/gui/window/view_form/view/form_gtk/many2one.py @@ -281,11 +281,14 @@ class Many2One(WidgetInterface): self.wid_text.grab_focus() try: + if self.wid_text.get_text(): + dom = [('rec_name', 'ilike', + '%' + self.wid_text.get_text() + '%'), + domain] + else: + dom = domain ids = rpc.execute('model', self.attrs['relation'], - 'search', - [('rec_name', 'ilike', - '%' + self.wid_text.get_text() + '%'), - domain], 0, _LIMIT, None, context) + 'search', dom, 0, _LIMIT, None, context) except Exception, exception: self.focus_out = True common.process_exception(exception, self._window) @@ -355,11 +358,14 @@ class Many2One(WidgetInterface): self.wid_text.grab_focus() try: + if self.wid_text.get_text(): + dom = [('rec_name', 'ilike', + '%' + self.wid_text.get_text() + '%'), + domain] + else: + dom = domain ids = rpc.execute('model', self.attrs['relation'], - 'search', - [('rec_name', 'ilike', - '%' + self.wid_text.get_text() +'%'), - domain], 0, _LIMIT, None, context) + 'search', dom, 0, _LIMIT, None, context) except Exception, exception: self.focus_out = True common.process_exception(exception, self._window) diff --git a/tryton/gui/window/view_form/view/form_gtk/one2many.py b/tryton/gui/window/view_form/view/form_gtk/one2many.py index 0428e3c378..dda701e104 100644 --- a/tryton/gui/window/view_form/view/form_gtk/one2many.py +++ b/tryton/gui/window/view_form/view/form_gtk/one2many.py @@ -378,11 +378,13 @@ class Dialog(object): context = rpc.CONTEXT.copy() try: + if self.wid_text.get_text(): + dom = [('rec_name', 'ilike', + '%' + self.wid_text.get_text() + '%'), domain] + else: + dom = domain ids = rpc.execute('model', self.attrs['relation'], - 'search', - [('rec_name', 'ilike', - '%' + self.wid_text.get_text() + '%'), domain], - 0, _LIMIT, None, context) + 'search', dom, 0, _LIMIT, None, context) except Exception, exception: common.process_exception(exception, self._window) return False @@ -605,11 +607,13 @@ class One2Many(WidgetInterface): removed_ids = self._view.modelfield.get_removed_ids(self._view.model) try: + if self.wid_text.get_text(): + dom = [('rec_name', 'ilike', '%' + self.wid_text.get_text() + '%'), + ['OR', domain, ('id', 'in', removed_ids)]] + else: + dom = ['OR', domain, ('id', 'in', removed_ids)] ids = rpc.execute('model', self.attrs['relation'], - 'search', - [('rec_name', 'ilike', '%' + self.wid_text.get_text() + '%'), - ['OR', domain, ('id', 'in', removed_ids)]], - 0, _LIMIT, None, context) + 'search', dom, 0, _LIMIT, None, context) except Exception, exception: common.process_exception(exception, self._window) return False diff --git a/tryton/gui/window/view_form/view/form_gtk/reference.py b/tryton/gui/window/view_form/view/form_gtk/reference.py index 313c130b08..10f13fbc27 100644 --- a/tryton/gui/window/view_form/view/form_gtk/reference.py +++ b/tryton/gui/window/view_form/view/form_gtk/reference.py @@ -167,11 +167,14 @@ class Reference(WidgetInterface): context = self._view.modelfield.context_get(self._view.model) try: - ids = rpc.execute('model', model, - 'search', - [('rec_name', 'ilike', + if self.wid_text.get_text(): + dom = [('rec_name', 'ilike', '%' + self.wid_text.get_text() + '%'), - domain], 0, _LIMIT, None, context) + domain] + else: + dom = domain + ids = rpc.execute('model', model, + 'search', dom, 0, _LIMIT, None, context) except Exception, exception: self.focus_out = True self.changed = True diff --git a/tryton/gui/window/view_form/view/list_gtk/parser.py b/tryton/gui/window/view_form/view/list_gtk/parser.py index 6852e79bbc..f136f29829 100644 --- a/tryton/gui/window/view_form/view/list_gtk/parser.py +++ b/tryton/gui/window/view_form/view/list_gtk/parser.py @@ -508,8 +508,12 @@ class M2O(Char): context = model[self.field_name].context_get(model) try: - ids = rpc_relation.search([('rec_name', 'ilike', '%' + text + '%'), - domain], 0, None, None, context) + if text: + dom = [('rec_name', 'ilike', '%' + text + '%'), + domain] + else: + dom = domain + ids = rpc_relation.search(dom, 0, None, None, context) except Exception, exception: common.process_exception(exception, self.window) return '???' @@ -532,9 +536,11 @@ class M2O(Char): rpc_relation = RPCProxy(relation) try: - ids = rpc_relation.search([ - ('rec_name', 'ilike', '%' + text + '%'), domain], - 0, None, None, context) + if text: + dom = [('rec_name', 'ilike', '%' + text + '%'), domain] + else: + dom = domain + ids = rpc_relation.search(dom, 0, None, None, context) except Exception, exception: common.process_exception(exception, self.window) return False, False @@ -627,8 +633,12 @@ class M2M(Char): domain = model[self.field_name].domain_get(model) context = model[self.field_name].context_get(model) try: - ids = rpc_relation.search([('rec_name', 'ilike', '%' + text + '%'), - domain], 0, _LIMIT, None, context) + if text: + dom = [('rec_name', 'ilike', '%' + text + '%'), + domain] + else: + dom = domain + ids = rpc_relation.search(dom, 0, _LIMIT, None, context) except Exception, exception: common.process_exception(exception, self.window) return []