# HG changeset patch # User Bjoern Ricks # Date 1279796556 0 # Node ID 5e8546444a8ec24f33503ff0977da212d8046d75 # Parent ecc671a84a73f645a86d77c42c82bc8dd9a5e9fc added a new root element which is called TreepkgRoot for Treepkg Info classes diff -r ecc671a84a73 -r 5e8546444a8e treepkg/info/status.py --- a/treepkg/info/status.py Thu Jul 22 10:26:40 2010 +0000 +++ b/treepkg/info/status.py Thu Jul 22 11:02:36 2010 +0000 @@ -54,8 +54,9 @@ def __init__(self, config, numnewestrev=-1): self.numnewestrev = numnewestrev group = get_packager_group(config) - self.tpkgroot = TreepkgRootInfo(group.name, group.treepkg_dir, + treepkgrootinfo = TreepkgRootInfo(group.name, group.treepkg_dir, group.tracks_dir) + self.tpgkroot = TreepkgRoot(version, treepkgrootinfo) tracks = group.get_package_tracks() for track in tracks: @@ -73,7 +74,7 @@ if not root.tagName == "treepkg": print xmlstr raise TreepkgInfoException("XML is not valid for treepkginfo") - return TreepkgRootInfo.fromxml(root) + return TreepkgRoot.fromxml(root) def add_revisions(self, track, trackinfo): revisions = track.get_revisions() @@ -115,6 +116,40 @@ pkginfo.add_checksum(checksuminfo) revision.add_package(pkginfo) +class TreepkgRoot: + + def __init__(self, version, info) + self.version = version + self.info = info + self.tracks = [] + + def add_track(self, track): + self.tracks.append(track) + + def toxml(self): + (doc, root) = createTpkgRoot("treepkg") + root.setAttributeNS(TREEPKG_NAMESPACE_URI, "version", self.version) + if len(self.tracks) > 0: + tracksele = createTpkgElement(doc, "tracks") + for track in self.tracks: + tracksele.appendChild(track.toxml()) + root.appendChild(tracksele) + root.appendChild(info.toxml()) + return root + + @staticmethod + def fromxml(node): + version = node.getAttribute("version") + trackseles = node.getElementsByTagName("tracks") + infoele = getChild(node, "info") + treepkgrootinfo = TreepkgRootInfo.fromxml(infoele) + treepkgroot = TreepkgRoot(version, treepkgrootinfo) + tracks = [] + for trackele in trackseles: + tracks.append(TreepkgTrackInfo.fromxml(trackele)) + treepkgroot.tracks = tracks + return treepkgroot + class TreepkgRootInfo: def __init__(self, name, treepkgpath=None, trackspath=None, version=None): @@ -122,10 +157,6 @@ self.treepkgpath = treepkgpath self.trackspath = trackspath self.version = version - self.tracks = [] - - def add_track(self, track): - self.tracks.append(track) def toxml(self): (doc, root) = createTpkgRoot("info") @@ -152,12 +183,7 @@ text = doc.createTextNode(self.version) versionele.appendChild(text) root.appendChild(versionele) - if len(self.tracks) > 0: - tracksele = createTpkgElement(doc, "tracks") - for track in self.tracks: - tracksele.appendChild(track.toxml()) - root.appendChild(tracksele) - return root + return root @staticmethod def fromxml(node): @@ -169,12 +195,7 @@ treepkgpath = getTextFromNode(treepkgpathele) trackspathele = getChild(infoele, "trackspath") trackspath = getTextFromNode(trackspathele) - trackseles = node.getElementsByTagName("tracks") - tracks = [] - for trackele in trackseles: - tracks.append(TreepkgTrackInfo.fromxml(trackele)) trackinfo = TreepkgRootInfo(name, treepkgpath, trackspath, version) - trackinfo.tracks = tracks return trackinfo class TreepkgTrackInfo: