Reviewers: ,
Please review this at http://codereview.tryton.org/580005/
Affected files:
M tryton/gui/window/view_form/screen/screen.py
Index: tryton/gui/window/view_form/screen/screen.py
===================================================================
--- a/tryton/gui/window/view_form/screen/screen.py
+++ b/tryton/gui/window/view_form/screen/screen.py
@@ -1,6 +1,7 @@
#This file is part of Tryton. The COPYRIGHT file at the top level of
#this repository contains the full copyright notices and license terms.
"Screen"
+import copy
import gobject
try:
import simplejson as json
@@ -97,35 +98,36 @@
def search_active(self, active=True):
if active and not self.parent:
- if not self.fields_view_tree:
- try:
- self.fields_view_tree = RPCExecute('model',
- self.model_name, 'fields_view_get', False, 'tree',
- context=self.context)
- except RPCException:
- return
+ if not self.domain_parser:
+ if not self.fields_view_tree:
+ try:
+ self.fields_view_tree = RPCExecute('model',
+ self.model_name, 'fields_view_get',
False, 'tree',
+ context=self.context)
+ except RPCException:
+ return
- fields = self.fields_view_tree['fields']
- for name, props in fields.iteritems():
- if props['type'] not in ('selection', 'reference'):
- continue
- if isinstance(props['selection'], (tuple, list)):
- continue
- props['selection'] = self.get_selection(props)
+ fields = copy.deepcopy(self.fields_view_tree['fields'])
+ for name, props in fields.iteritems():
+ if props['type'] not in ('selection', 'reference'):
+ continue
+ if isinstance(props['selection'], (tuple, list)):
+ continue
+ props['selection'] = self.get_selection(props)
- # Filter only fields in XML view
- xml_dom = xml.dom.minidom.parseString(
- self.fields_view_tree['arch'])
- root_node, = xml_dom.childNodes
- xml_fields = [node_attributes(node).get('name')
- for node in root_node.childNodes if node.nodeName
== 'field']
- if hasattr(collections, 'OrderedDict'):
- odict = collections.OrderedDict
- else:
- odict = dict
- fields = odict((name, fields[name]) for name in xml_fields)
+ # Filter only fields in XML view
+ xml_dom = xml.dom.minidom.parseString(
+ self.fields_view_tree['arch'])
+ root_node, = xml_dom.childNodes
+ xml_fields = [node_attributes(node).get('name')
+ for node in root_node.childNodes if node.nodeName
== 'field']
+ if hasattr(collections, 'OrderedDict'):
+ odict = collections.OrderedDict
+ else:
+ odict = dict
+ fields = odict((name, fields[name]) for name in xml_fields)
- self.domain_parser = DomainParser(fields)
+ self.domain_parser = DomainParser(fields)
self.screen_container.set_screen(self)
self.screen_container.show_filter()
--
--
[email protected] mailing list