Beispiel #1
0
    def getEnterprisecopy(self):
        from xml.dom.ext.reader import Sax2
        from XmlTools import clone_node
        import xml.dom
        from comoonics import odict
        import os.path
        result_doc = None
        source = None
        reader = Sax2.Reader(validate=self.xml_validate)
        ret_doc = None
        ret_element = None
        _sets = odict.Odict()
        for _templatefile in self.templatefiles:
            _file = open(
                os.path.join(self.sysreport_templatesbase, _templatefile), "r")
            doc = reader.fromStream(_file)
            if not ret_doc:
                _impl = xml.dom.getDOMImplementation()
                ret_doc = _impl.createDocument(None,
                                               doc.documentElement.tagName,
                                               None)
                ret_element = ret_doc.documentElement
            for _child in doc.documentElement.childNodes:
                if _child.nodeType == xml.dom.Node.ELEMENT_NODE:
                    if _child.hasAttribute("name"):
                        _sets[_child.getAttribute("name")] = clone_node(
                            _child, ret_doc)
                elif _child.nodeType == xml.dom.Node.ATTRIBUTE_NODE:
                    ret_element.appendChild(clone_node(_child, ret_doc))
        # remove the save-sysreport and add it to the end
        _save_set = _sets[self.save_set]
        del _sets[self.save_set]
        _sets[self.save_set] = _save_set

        for _set in _sets.values():
            Sysreport.logger.debug("getEnterprisecopy() adding child: %s" %
                                   _set.getAttribute("name"))
            ret_element.appendChild(_set)
        del _sets[self.save_set]
        del _sets[self.head_set]
        self.sets = _sets
        return EnterpriseCopy(ret_element, ret_doc)