[Treepkg-commits] r370 - branches/treepkg-status/treepkg/info

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Thu Jul 22 13:02:36 CEST 2010


Author: bricks
Date: 2010-07-22 13:02:36 +0200 (Thu, 22 Jul 2010)
New Revision: 370

Modified:
   branches/treepkg-status/treepkg/info/status.py
Log:
added a new root element which is called TreepkgRoot for Treepkg Info classes


Modified: branches/treepkg-status/treepkg/info/status.py
===================================================================
--- branches/treepkg-status/treepkg/info/status.py	2010-07-22 10:26:40 UTC (rev 369)
+++ branches/treepkg-status/treepkg/info/status.py	2010-07-22 11:02:36 UTC (rev 370)
@@ -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,11 +157,7 @@
         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")
         # add <name>
@@ -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:



More information about the Treepkg-commits mailing list