From 23486abcb3d33eb7f913adb04c65441ad4643bd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 12 Feb 2020 00:11:55 +0100 Subject: [PATCH] Manage exclude field from search window When creating a new record from search window, we should include the relation field as excluded like it is done for direct creation. issue9024 review274811009 --- tryton/gui/window/view_form/view/form_gtk/many2one.py | 6 ++++-- tryton/gui/window/view_form/view/form_gtk/one2many.py | 3 ++- tryton/gui/window/win_search.py | 6 ++++-- 3 files changed, 10 insertions(+), 5 deletions(-) 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 2cc37bf033..8484cf3cd4 100644 --- a/tryton/gui/window/view_form/view/form_gtk/many2one.py +++ b/tryton/gui/window/view_form/view/form_gtk/many2one.py @@ -132,7 +132,8 @@ class Many2One(Widget): view_ids=self.attrs.get('view_ids', '').split(','), views_preload=self.attrs.get('views', {}), new=self.create_access, - title=self.attrs.get('string')) + title=self.attrs.get('string'), + exclude_field=self.attrs.get('relation_field')) win.screen.search_filter(quote(text)) if len(win.screen.group) == 1: win.response(None, Gtk.ResponseType.OK) @@ -219,7 +220,8 @@ class Many2One(Widget): context=context, domain=domain, order=order, view_ids=self.attrs.get('view_ids', '').split(','), views_preload=self.attrs.get('views', {}), - new=self.create_access, title=self.attrs.get('string')) + new=self.create_access, title=self.attrs.get('string'), + exclude_field=self.attrs.get('relation_field')) win.screen.search_filter(quote(text)) win.show() return 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 990d35a982..22ede0d34a 100644 --- a/tryton/gui/window/view_form/view/form_gtk/one2many.py +++ b/tryton/gui/window/view_form/view/form_gtk/one2many.py @@ -475,7 +475,8 @@ class One2Many(Widget): view_ids=self.attrs.get('view_ids', '').split(','), views_preload=self.attrs.get('views', {}), new=self.but_new.get_property('sensitive'), - title=self.attrs.get('string')) + title=self.attrs.get('string'), + exclude_field=self.attrs.get('relation_field')) win.screen.search_filter(quote(text)) win.show() diff --git a/tryton/gui/window/win_search.py b/tryton/gui/window/win_search.py index 67c51d9550..7b18f58d97 100644 --- a/tryton/gui/window/win_search.py +++ b/tryton/gui/window/win_search.py @@ -19,7 +19,7 @@ class WinSearch(NoModal): def __init__(self, model, callback, sel_multi=True, context=None, domain=None, order=None, view_ids=None, - views_preload=None, new=True, title=''): + views_preload=None, new=True, title='', exclude_field=None): NoModal.__init__(self) if view_ids is None: view_ids = [] @@ -33,6 +33,7 @@ class WinSearch(NoModal): self.sel_multi = sel_multi self.callback = callback self.title = title + self.exclude_field = exclude_field self.win = Gtk.Dialog( title=_('Search'), transient_for=self.parent, @@ -130,7 +131,8 @@ class WinSearch(NoModal): view_ids = self.view_ids[1:] screen = Screen(self.model_name, domain=self.domain, context=self.context, order=self.order, mode=['form'], - view_ids=view_ids, views_preload=self.views_preload) + view_ids=view_ids, views_preload=self.views_preload, + exclude_field=self.exclude_field) def callback(result): if result: