def test_update_submodel(self): filename = os.path.join(self.get_test_data_dir(__file__), 'model_child.xml') p = MockupOpusProject() p.open(filename) xml = etree.tostring(p._root_node) manager = MockupManager(xml='', manager_node_path='model_manager', opus_project=p) controller = xcm.XmlController_Models(manager) local_node = p.find('model_manager/model/submodel', name='local node') shadowing_node = p.find('model_manager/model/submodel', name='shadow node') self.assert_(local_node is not None) self.assert_(shadowing_node is not None) # created an edited version of local node edited_node = etree.Element('submodel', {'name': 'edited local node'}) vlist_node = etree.SubElement(edited_node, 'variable_list', {'type': 'variable_list'}) variable_spec_node = etree.SubElement(vlist_node, 'variable_spec', {'name': '.edited_var'}) controller._update_submodel(local_node, edited_node) # the decription should be gone and the variables and named should have changed self.assert_(local_node.find('description') is None) self.assertEqual( local_node.find('variable_list/variable_spec').get('name'), '.edited_var') self.assertEqual(local_node.get('name'), 'edited local node') # make sure no new nodes was added self.assertEqual(len(p.findall('model_manager/model/submodel')), 3) # renaming a shadowing node should insert a new local copy and reinsert the shadowed node self.assert_(shadowing_node.get('inherited') is None) edited_node.set('name', 'new copy') controller._update_submodel(shadowing_node, edited_node) shadowing_node = p.find('model_manager/model/submodel', name='shadow node') self.assert_(shadowing_node.get('inherited') is not None) # this should now be inherited new_copy_node = p.find('model_manager/model/submodel', name='new copy') self.assert_(new_copy_node is not None) # make sure only one node was added self.assertEqual(len(p.findall('model_manager/model/submodel')), 4)
def test_update_submodel(self): filename = os.path.join(self.get_test_data_dir(__file__), 'model_child.xml') p = MockupOpusProject() p.open(filename) xml = etree.tostring(p._root_node) manager = MockupManager(xml='', manager_node_path='model_manager', opus_project=p) controller = xcm.XmlController_Models(manager) local_node = p.find('model_manager/model/submodel', name='local node') shadowing_node = p.find('model_manager/model/submodel', name='shadow node') self.assert_(local_node is not None) self.assert_(shadowing_node is not None) # created an edited version of local node edited_node = etree.Element('submodel', {'name': 'edited local node'}) vlist_node = etree.SubElement(edited_node, 'variable_list', {'type': 'variable_list'}) variable_spec_node = etree.SubElement(vlist_node, 'variable_spec', {'name': '.edited_var'}) controller._update_submodel(local_node, edited_node) # the decription should be gone and the variables and named should have changed self.assert_(local_node.find('description') is None) self.assertEqual(local_node.find('variable_list/variable_spec').get('name'), '.edited_var') self.assertEqual(local_node.get('name'), 'edited local node') # make sure no new nodes was added self.assertEqual(len(p.findall('model_manager/model/submodel')), 3) # renaming a shadowing node should insert a new local copy and reinsert the shadowed node self.assert_(shadowing_node.get('inherited') is None) edited_node.set('name', 'new copy') controller._update_submodel(shadowing_node, edited_node) shadowing_node = p.find('model_manager/model/submodel', name='shadow node') self.assert_(shadowing_node.get('inherited') is not None) # this should now be inherited new_copy_node = p.find('model_manager/model/submodel', name='new copy') self.assert_(new_copy_node is not None) # make sure only one node was added self.assertEqual(len(p.findall('model_manager/model/submodel')), 4)
<variable_spec name=".land_price" keep_fixed="False" type="variable" /> <variable_spec name=".ignore_me" type="variable" ignore="True"/> <variable_spec name="constant" type="variable" /> <variable_spec name="dataset2.variable" type="variable" /> </variable_list> </opus_project> ''' app = QtGui.QApplication([], True) p = MockupOpusProject(xml) f = QtGui.QFrame() l = QtGui.QVBoxLayout() f.setLayout(l) tv = QtGui.QTableView() m = VariableSelectorTableModel(p) v_defs = p.findall('expression_library/variable') m.init_for_variable_node_list(p.find('variable_list')) tv.setModel(m) l.addWidget(QtGui.QLabel('Hello')) l.addWidget(tv) pb = QtGui.QPushButton('reload') lbl = QtGui.QLabel() def update_text(): text = '' for v in m._variable_nodes: text = text + etree.tostring(v, pretty_print=True) lbl.setText(text) def add_variable(): node = p.find('variables/variable', name='add me')
<variable_spec name=".land_price" keep_fixed="False" type="variable" /> <variable_spec name=".ignore_me" type="variable" ignore="True"/> <variable_spec name="constant" type="variable" /> <variable_spec name="dataset2.variable" type="variable" /> </variable_list> </opus_project> ''' app = QtGui.QApplication([], True) p = MockupOpusProject(xml) f = QtGui.QFrame() l = QtGui.QVBoxLayout() f.setLayout(l) tv = QtGui.QTableView() m = VariableSelectorTableModel(p) v_defs = p.findall('expression_library/variable') m.init_for_variable_node_list(p.find('variable_list')) tv.setModel(m) l.addWidget(QtGui.QLabel('Hello')) l.addWidget(tv) pb = QtGui.QPushButton('reload') lbl = QtGui.QLabel() def update_text(): text = '' for v in m._variable_nodes: text = text + etree.tostring(v, pretty_print=True) lbl.setText(text) def add_variable(): node = p.find('variables/variable', name='add me') m.add_selection_for_variable_node(node)