Example #1
0
def retrieve_text(node: Element) -> str:
    if node.hasChildNodes():
        elements = list(
            filter(
                lambda _: _.nodeType == Node.TEXT_NODE or
                (_.nodeType == Node.ELEMENT_NODE and _.tagName == "span"),
                node.childNodes))
        mapping = map(
            lambda x: x.nodeValue
            if x.nodeType == Node.TEXT_NODE else x.firstChild.nodeValue,
            elements)
        return reduce(lambda x, y: x + "\n" + y, mapping)
    else:
        return str(node)
Example #2
0
class TraitElement(Element):
    def __init__(self, conn, suite):
        self.conn = conn
        self.cursor = StatementCursor(self.conn, name='_Trait_')
        Element.__init__(self, 'trait')
        self.desc_element = TextElement('description', None)
        self.parent_element = Element('parents')
        self.pkg_element = Element('packages')
        self.env_element = Element('environ')
        self.templ_element = Element('templates')
        self.scripts_element = Element('scripts')
        self.debconf_element = DebConfigurationElement()
        self.appendChild(self.desc_element)
        self.appendChild(self.parent_element)
        self.appendChild(self.pkg_element)
        self.appendChild(self.env_element)
        self.appendChild(self.templ_element)
        self.appendChild(self.debconf_element)
        self.appendChild(self.scripts_element)
        self.set_suite(suite)
        
    def set_suite(self, suite):
        self.suite = suite
        self.setAttribute('suite', self.suite)
        self.traitparent = TraitParent(self.conn, self.suite)
        self.traitpackage = TraitPackage(self.conn, self.suite)
        self.traittemplate = TraitTemplate(self.conn, self.suite)
        self.traitdebconf = TraitDebconf(self.conn, self.suite)
        self.traitscripts = TraitScript(self.conn, self.suite)

    def set_environ(self):
        self.environ = TraitEnvironment(self.conn, self.suite, self.name)
        new_element = EnvironElement(self.environ)
        self.replaceChild(new_element, self.env_element)
        self.env_element = new_element

    def set_parents(self):
        self.parents = self.traitparent.parents(self.name)
        while self.parent_element.hasChildNodes():
            del self.parent_element.childNodes[0]
        for parent in self.parents:
            self.parent_element.appendChild(ParentElement(parent.parent))
            
    def set_packages(self):
        self.packages = self.traitpackage.packages([self.name])
        while self.pkg_element.hasChildNodes():
            del self.pkg_element.childNodes[0]
        for package in self.packages:
            pelement = PackageElement(package.package)
            pelement.setAttribute('action', package.action)
            self.pkg_element.appendChild(pelement)

    def set_templates(self):
        self.templates = self.traittemplate.templates(self.name)
        while self.templ_element.hasChildNodes():
            del self.templ_element.childNodes[0]
        for template in self.templates:
            element = TemplateElement(template.package, template.template)
            for att in ['package', 'mode', 'owner', 'grp_owner']:
                element.setAttribute(att, template[att])
            self.templ_element.appendChild(element)

    def set_debconf(self):
        self.debconf = self.traitdebconf.trait_debconf(self.name)
        while self.debconf_element.hasChildNodes():
            del self.debconf_element.childNodes[0]
        for debconf in self.debconf:
            element = DebConfElement(self.name, debconf)
            self.debconf_element.appendChild(element)

    def set_scripts(self):
        self.scripts = [x.script for x in self.traitscripts.scripts(self.name)]
        while self.scripts_element.hasChildNodes():
            del self.scripts_element.childNodes[0]
        for script in self.scripts:
            element = Element('script')
            element.setAttribute('name', script)
            self.scripts_element.appendChild(element)
            

    def set_name(self, name):
        self.name = name
        self.setAttribute('name', self.name)

    def set_priority(self, priority):
        self.priority = priority
        self.setAttribute('priority', self.priority)

    def set(self, name):
        self.set_name(name)
        self.set_suite(self.suite)
        self.set_environ()
        self.set_parents()
        self.set_packages()
        self.set_templates()
        self.set_debconf()
        self.set_scripts()
        
    def str(self):
        print self.toprettyxml()
Example #3
0
class TraitElement(Element):
    def __init__(self, conn, suite):
        self.conn = conn
        self.cursor = StatementCursor(self.conn, name='_Trait_')
        Element.__init__(self, 'trait')
        self.desc_element = TextElement('description', None)
        self.parent_element = Element('parents')
        self.pkg_element = Element('packages')
        self.env_element = Element('environ')
        self.templ_element = Element('templates')
        self.scripts_element = Element('scripts')
        self.appendChild(self.desc_element)
        self.appendChild(self.parent_element)
        self.appendChild(self.pkg_element)
        self.appendChild(self.env_element)
        self.appendChild(self.templ_element)
        self.appendChild(self.scripts_element)
        self.set_suite(suite)
        
    def set_suite(self, suite):
        self.suite = suite
        # will probably make this a configuration option later
        # turning it off for now.
        if False:
            self.setAttribute('suite', self.suite)
        self.traitparent = TraitParent(self.conn, self.suite)
        self.traitpackage = TraitPackage(self.conn, self.suite)
        self.traittemplate = TraitTemplate(self.conn, self.suite)
        self.traitscripts = TraitScript(self.conn, self.suite)

    def set_environ(self):
        self.environ = TraitEnvironment(self.conn, self.suite, self.name)
        while self.env_element.hasChildNodes():
            del self.env_element.childNodes[0]
        for key, value in self.environ.items():
            var_element = TraitVariableElement(self.name, key, value)
            self.env_element.appendChild(var_element)
    
    def set_parents(self):
        self.parents = self.traitparent.parents(self.name)
        while self.parent_element.hasChildNodes():
            del self.parent_element.childNodes[0]
        for parent in self.parents:
            self.parent_element.appendChild(ParentElement(parent.parent))
            
    def set_packages(self):
        self.packages = self.traitpackage.packages([self.name])
        while self.pkg_element.hasChildNodes():
            del self.pkg_element.childNodes[0]
        for package in self.packages:
            pelement = PackageElement(package.package)
            pelement.setAttribute('action', package.action)
            self.pkg_element.appendChild(pelement)

    def set_templates(self):
        self.templates = self.traittemplate.templates(self.name)
        while self.templ_element.hasChildNodes():
            del self.templ_element.childNodes[0]
        for template in self.templates:
            element = TemplateElement(template.template)
            for att in ['mode', 'owner', 'grp_owner']:
                element.setAttribute(att, template[att])
            self.templ_element.appendChild(element)

    def set_scripts(self):
        self.scripts = [x.script for x in self.traitscripts.scripts(self.name)]
        while self.scripts_element.hasChildNodes():
            del self.scripts_element.childNodes[0]
        for script in self.scripts:
            element = Element('script')
            element.setAttribute('name', script)
            self.scripts_element.appendChild(element)
            

    def set_name(self, name):
        self.name = name
        self.setAttribute('name', self.name)

    def set_priority(self, priority):
        self.priority = priority
        self.setAttribute('priority', self.priority)

    def set(self, name):
        self.set_name(name)
        # this is probably not needed here, and slows things down
        # considerably
        #self.set_suite(self.suite)
        self.set_environ()
        self.set_parents()
        self.set_packages()
        self.set_templates()
        self.set_scripts()
        
    def str(self):
        print self.toprettyxml()
Example #4
0
class TraitElement(Element):
    def __init__(self, conn, suite):
        self.conn = conn
        self.cursor = StatementCursor(self.conn, name='_Trait_')
        Element.__init__(self, 'trait')
        self.desc_element = TextElement('description', None)
        self.parent_element = Element('parents')
        self.pkg_element = Element('packages')
        self.env_element = Element('environ')
        self.templ_element = Element('templates')
        self.scripts_element = Element('scripts')
        self.debconf_element = DebConfigurationElement()
        self.appendChild(self.desc_element)
        self.appendChild(self.parent_element)
        self.appendChild(self.pkg_element)
        self.appendChild(self.env_element)
        self.appendChild(self.templ_element)
        self.appendChild(self.debconf_element)
        self.appendChild(self.scripts_element)
        self.set_suite(suite)
        
    def set_suite(self, suite):
        self.suite = suite
        self.setAttribute('suite', self.suite)
        self.traitparent = TraitParent(self.conn, self.suite)
        self.traitpackage = TraitPackage(self.conn, self.suite)
        self.traittemplate = TraitTemplate(self.conn, self.suite)
        self.traitdebconf = TraitDebconf(self.conn, self.suite)
        self.traitscripts = TraitScript(self.conn, self.suite)

    def set_environ(self):
        self.environ = TraitEnvironment(self.conn, self.suite, self.name)
        new_element = EnvironElement(self.environ)
        self.replaceChild(new_element, self.env_element)
        self.env_element = new_element

    def set_parents(self):
        self.parents = self.traitparent.parents(self.name)
        while self.parent_element.hasChildNodes():
            del self.parent_element.childNodes[0]
        for parent in self.parents:
            self.parent_element.appendChild(ParentElement(parent.parent))
            
    def set_packages(self):
        self.packages = self.traitpackage.packages([self.name])
        while self.pkg_element.hasChildNodes():
            del self.pkg_element.childNodes[0]
        for package in self.packages:
            pelement = PackageElement(package.package)
            pelement.setAttribute('action', package.action)
            self.pkg_element.appendChild(pelement)

    def set_templates(self):
        self.templates = self.traittemplate.templates(self.name)
        while self.templ_element.hasChildNodes():
            del self.templ_element.childNodes[0]
        for template in self.templates:
            element = TemplateElement(template.package, template.template)
            for att in ['package', 'mode', 'owner', 'grp_owner']:
                element.setAttribute(att, template[att])
            self.templ_element.appendChild(element)

    def set_debconf(self):
        self.debconf = self.traitdebconf.trait_debconf(self.name)
        while self.debconf_element.hasChildNodes():
            del self.debconf_element.childNodes[0]
        for debconf in self.debconf:
            element = DebConfElement(self.name, debconf)
            self.debconf_element.appendChild(element)

    def set_scripts(self):
        self.scripts = [x.script for x in self.traitscripts.scripts(self.name)]
        while self.scripts_element.hasChildNodes():
            del self.scripts_element.childNodes[0]
        for script in self.scripts:
            element = Element('script')
            element.setAttribute('name', script)
            self.scripts_element.appendChild(element)
            

    def set_name(self, name):
        self.name = name
        self.setAttribute('name', self.name)

    def set_priority(self, priority):
        self.priority = priority
        self.setAttribute('priority', self.priority)

    def set(self, name):
        self.set_name(name)
        self.set_suite(self.suite)
        self.set_environ()
        self.set_parents()
        self.set_packages()
        self.set_templates()
        self.set_debconf()
        self.set_scripts()
        
    def str(self):
        print self.toprettyxml()