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 ec567839c1..a4ceef2cd7 100644 --- a/tryton/gui/window/view_form/view/form_gtk/many2many.py +++ b/tryton/gui/window/view_form/view/form_gtk/many2many.py @@ -69,7 +69,8 @@ class Many2Many(WidgetInterface): ids = [x[0] for x in ids] if len(ids) != 1: win = WinSearch(self.attrs['relation'], sel_multi=True, ids=ids, - context=context, domain=domain, parent=self._window) + context=context, domain=domain, parent=self._window, + views_preload=self.attrs.get('views', {})) ids = win.run() self.screen.load(ids) diff --git a/tryton/gui/window/win_search.py b/tryton/gui/window/win_search.py index 9d251b307b..8380fa11d8 100644 --- a/tryton/gui/window/win_search.py +++ b/tryton/gui/window/win_search.py @@ -11,7 +11,7 @@ _ = gettext.gettext class WinSearch(object): def __init__(self, model, sel_multi=True, ids=None, context=None, - domain=None, parent=None): + domain=None, parent=None, views_preload=None): self.domain = domain or [] self.context = context or {} self.context.update(rpc.CONTEXT) @@ -34,7 +34,7 @@ class WinSearch(object): self.win.vbox.pack_start(scrollwindow, expand=True, fill=True) self.screen = Screen(model, self.win, view_type=['tree'], - context=context) + context=context, views_preload=views_preload) self.view = self.screen.current_view self.view.unset_editable() sel = self.view.widget_tree.get_selection() @@ -53,13 +53,15 @@ class WinSearch(object): self.model_name = model - try: - view_form = rpc.execute('object', 'execute', - self.model_name, 'fields_view_get', False, 'tree', - self.context) - except Exception, exception: - rpc.process_exception(exception, self.parent) - raise + if 'tree' in views_preload: + view_form = views_preload['tree'] + else: + try: + args = ('object', 'execute', self.model_name, 'fields_view_get', + False, 'tree', self.context) + view_form = rpc.execute(*args) + except Exception, exception: + view_form = rpc.process_exception(exception, self.parent, *args) self.form = widget_search.Form(view_form['arch'], view_form['fields'], model, parent=self.win)