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)
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()