Factorize loading views
This commit is contained in:
1 parent
b68379c56a
commit
25da76dbba
4 files changed
+12
-33
No files matched your search
@@ -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()
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in new issue
Block a user