Factorize loading views

This commit is contained in:
Cédric Krier committed 2012-12-05 15:16:30 +01:00
1 parent b68379c56a
commit 25da76dbba
4 files changed
+12 -33

No files matched your search

-1
View File
@@ -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()
+2 -7
View File
@@ -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:
+9 -24
View File
@@ -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):
+1 -1
View File
@@ -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)