]> git.ipfire.org Git - people/shoehn/ipfire.org.git/blobdiff - webapp/backend/releases.py
talk: Make addresses clickable and open a map
[people/shoehn/ipfire.org.git] / webapp / backend / releases.py
index 64bed28818d3f19f84d761df35eed85789ad95e9..d7f5433f2b92de68889b7b0171c7e9085e4e1512 100644 (file)
@@ -51,6 +51,9 @@ class File(Object):
                        return "torrent"
 
                elif "xen" in filename:
+                       if "downloader" in filename:
+                               return "xen-downloader"
+
                        return "xen"
 
                elif "sources" in filename:
@@ -93,10 +96,11 @@ class File(Object):
                        "iso"           : _("Installable CD image"),
                        "torrent"       : _("Torrent file"),
                        "flash"         : _("Flash image"),
-                       "alix"          : _("Alix image"),
+                       "alix"          : _("Flash image for devices with serial console"),
                        "usbfdd"        : _("USB FDD Image"),
                        "usbhdd"        : _("USB HDD Image"),
                        "xen"           : _("Pregenerated Xen image"),
+                       "xen-downloader": _("Xen-Image Generator"),
                }
 
                try:
@@ -116,6 +120,7 @@ class File(Object):
                        "armv5tel"      : 40,
                        "armv5tel-scon" : 41,
                        "xen"           : 50,
+                       "xen-downloader": 51,
                }
                
                try:
@@ -137,6 +142,7 @@ class File(Object):
                        "usbfdd"        : _("Install IPFire from a floppy-formated USB key."),
                        "usbhdd"        : _("If the floppy image doesn't work, use this image instead."),
                        "xen"           : _("A ready-to-run image for Xen."),
+                       "xen-downloader": _("Generator for creating a Xen image."),
                }
 
                try:
@@ -195,14 +201,14 @@ class File(Object):
                if not self.torrent_hash:
                        return
 
-               return self.tracker.get_seeds(self.torrent_hash)
+               return self.backend.tracker.complete(self.torrent_hash)
 
        @property
        def peers(self):
                if not self.torrent_hash:
                        return
 
-               return self.tracker.get_peers(self.torrent_hash)
+               return self.backend.tracker.incomplete(self.torrent_hash)
 
 
 class Release(Object):
@@ -371,8 +377,15 @@ class Release(Object):
                return "http://downloads.ipfire.org/%s/images/instroot" % self.path
 
        @property
-       def netboot_append(self):
-               return "ro"
+       def news_id(self):
+               return self.__data.news_id
+
+       @property
+       def news(self):
+               if not hasattr(self, "_news"):
+                       self._news = self.backend.news.get(self.news_id)
+
+               return self._news
 
 
 class Releases(Object):
@@ -395,6 +408,17 @@ class Releases(Object):
                if ret:
                        return Release(self.backend, ret.id, data=ret)
 
+       def get_latest_unstable(self):
+               ret = self.db.get("SELECT * FROM releases r1 \
+                       WHERE r1.published IS NOT NULL AND r1.published <= NOW() \
+                       AND stable = %s AND NOT EXISTS ( \
+                               SELECT * FROM releases r2 WHERE r2.stable = %s AND \
+                                       r2.published IS NOT NULL AND r2.published >= r1.published \
+                               ) ORDER BY r1.published DESC LIMIT 1", False, True)
+
+               if ret:
+                       return Release(self.backend, ret.id, data=ret)
+
        def get_stable(self):
                query = self.db.query("SELECT * FROM releases \
                        WHERE published IS NOT NULL AND published <= NOW() AND stable = TRUE \
@@ -431,6 +455,16 @@ class Releases(Object):
 
                return releases
 
+       def _get_all(self):
+               query = self.db.query("SELECT * FROM releases ORDER BY published DESC")
+
+               releases = []
+               for row in query:
+                       release = Release(self.backend, row.id, data=row)
+                       releases.append(release)
+
+               return releases
+
        def get_file_for_torrent_hash(self, torrent_hash):
                file = self.db.get("SELECT id, releases FROM files WHERE torrent_hash = %s LIMIT 1",
                        torrent_hash)
@@ -438,7 +472,7 @@ class Releases(Object):
                if not file:
                        return
 
-               release = Release(file.releases)
-               file = File(release, file.id)
+               release = Release(self.backend, file.releases)
+               file = File(self.backend, release, file.id)
 
                return file