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)
Пример #2
0
    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)
Пример #3
0
            <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')
Пример #4
0
            <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)