From 25da76dbbaa2ab4d6a2488784b8f076eb894f2ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 5 Dec 2012 15:16:30 +0100 Subject: [PATCH] Factorize loading views --- tryton/gui/window/preference.py | 1 - tryton/gui/window/view_form/model/group.py | 9 ++---- tryton/gui/window/view_form/screen/screen.py | 33 ++++++-------------- tryton/gui/window/wizard.py | 2 +- 4 files changed, 12 insertions(+), 33 deletions(-) diff --git a/tryton/gui/window/preference.py b/tryton/gui/window/preference.py index 7d6c055b20..d9584b1af9 100644 --- a/tryton/gui/window/preference.py +++ b/tryton/gui/window/preference.py @@ -65,7 +65,6 @@ class Preference(NoModal): return self.screen.current_record.set(preferences) self.screen.current_record.validate(softvalidation=True) - self.screen.screen_container.set(self.screen.current_view.widget) self.screen.display(set_cursor=True) self.screen.widget.show() diff --git a/tryton/gui/window/view_form/model/group.py b/tryton/gui/window/view_form/model/group.py index 1895c8cffb..e64b049645 100644 --- a/tryton/gui/window/view_form/model/group.py +++ b/tryton/gui/window/view_form/model/group.py @@ -375,10 +375,7 @@ class Group(SignalEvent, list): return None return self[self.current_idx] - def add_fields(self, fields, context=None, signal=True): - if context is None: - context = {} - + def add_fields(self, fields, signal=True): to_add = {} for name, attr in fields.iteritems(): if name not in self.fields: @@ -394,13 +391,11 @@ class Group(SignalEvent, list): for record in self: if record.id < 0: new.append(record) - ctx = context.copy() if len(new) and len(to_add): - ctx.update(self.context) try: values = RPCExecute('model', self.model_name, 'default_get', - to_add.keys(), context=ctx) + to_add.keys(), context=self.context) except RPCException: return False for name in to_add: diff --git a/tryton/gui/window/view_form/screen/screen.py b/tryton/gui/window/view_form/screen/screen.py index 3ad1db11ef..e2b4c12a30 100644 --- a/tryton/gui/window/view_form/screen/screen.py +++ b/tryton/gui/window/view_form/screen/screen.py @@ -83,14 +83,8 @@ class Screen(SignalEvent): lambda: collections.defaultdict(lambda: None)) self.domain_parser = None self.pre_validate = False - - if mode: - self.view_to_load = mode[1:] - view_id = False - if self.view_ids: - view_id = self.view_ids.pop(0) - view = self.add_view_id(view_id, mode[0]) - self.screen_container.set(view.widget) + self.view_to_load = mode[:] + self.load_view_to_load() self.display() def __repr__(self): @@ -356,13 +350,12 @@ class Screen(SignalEvent): if len(self.view_to_load): if self.view_ids: view_id = self.view_ids.pop(0) - view_type = self.view_to_load.pop(0) else: view_id = False - view_type = self.view_to_load.pop(0) + view_type = self.view_to_load.pop(0) self.add_view_id(view_id, view_type) - def add_view_id(self, view_id, view_type, display=False, context=None): + def add_view_id(self, view_id, view_type): if view_type in self.views_preload: view = self.views_preload[view_type] else: @@ -371,9 +364,9 @@ class Screen(SignalEvent): view_id, view_type, context=self.context) except RPCException: return - return self.add_view(view, display, context=context) + return self.add_view(view) - def add_view(self, view, display=False, context=None): + def add_view(self, view): arch = view['arch'] fields = view['fields'] @@ -399,7 +392,7 @@ class Screen(SignalEvent): children_field = view.get('field_childs') from tryton.gui.window.view_form.view.widget_parse import WidgetParse - self.group.add_fields(fields, context=context) + self.group.add_fields(fields) parser = WidgetParse(parent=self.parent) view = parser.parse(self, xml_dom, self.group.fields, @@ -407,16 +400,8 @@ class Screen(SignalEvent): self.views.append(view) - if display: - self.__current_view = len(self.views) - 1 - self.screen_container.set(self.current_view.widget) - fields = self.current_view.get_fields() - if (not self.current_record - and self.current_view.view_type == 'form'): - self.new() - self.set_cursor() - self.current_view.cancel() - self.display() + self.__current_view = len(self.views) - 1 + self.screen_container.set(self.current_view.widget) return view def editable_get(self): diff --git a/tryton/gui/window/wizard.py b/tryton/gui/window/wizard.py index e366e3cd20..e9c4bb3757 100644 --- a/tryton/gui/window/wizard.py +++ b/tryton/gui/window/wizard.py @@ -166,7 +166,7 @@ class Wizard(object): self._get_button(button) self.screen = Screen(view['model'], mode=[], context=self.context) - self.screen.add_view(view, display=True) + self.screen.add_view(view) self.screen.widget.show() self.screen.signal_connect(self, 'record-modified', self._record_modified)