]>
git.ipfire.org Git - people/shoehn/ipfire.org.git/blob - www/webapp/backend/releases.py
6 from databases
import Databases
7 from misc
import Singleton
8 from settings
import Settings
11 def __init__(self
, release
, id):
12 self
.release
= release
14 # get all data from database
15 self
.__data
= self
.db
.get("SELECT * FROM files WHERE id = %s", id)
19 return self
.release
.db
23 return self
.__data
.get("filetype")
27 baseurl
= Settings().get("download_url")
29 return urlparse
.urljoin(baseurl
, self
.filename
)
36 "iso" : _("Installable CD image"),
37 "torrent" : _("Torrent file"),
38 "flash" : _("Flash image"),
39 "alix" : _("Alix image"),
40 "usbfdd" : _("USB FDD Image"),
41 "usbhdd" : _("USB HDD Image"),
42 "xen" : _("Pregenerated Xen image"),
46 return descriptions
[self
.type]
48 return _("Unknown image type")
63 return priorities
[self
.type]
72 "iso" : _("Use this image to burn a CD and install IPFire from it."),
73 "torrent" : _("Download the CD image from the torrent network."),
74 "flash" : _("An image that is meant to run on embedded devices."),
75 "alix" : _("Flash image where a serial console is enabled by default."),
76 "usbfdd" : _("Install IPFire from a floppy-formated USB key."),
77 "usbhdd" : _("If the floppy image doesn't work, use this image instead."),
78 "xen" : _("A ready-to-run image for Xen."),
82 return remarks
[self
.type]
84 return _("Unknown image type")
88 return self
.__data
.get("sha1")
92 return self
.__data
.get("filename")
95 class Release(object):
100 def __init__(self
, id):
103 # get all data from database
105 self
.db
.get("SELECT * FROM releases WHERE id = %s", self
.id)
111 return "<%s %s>" % (self
.__class
__.__name
__, self
.name
)
116 files
= self
.db
.query("SELECT id FROM files WHERE releases = %s \
117 AND loadable = 'Y'", self
.id)
119 self
.__files
= [File(self
, f
.id) for f
in files
]
120 self
.__files
.sort(lambda a
, b
: cmp(a
.prio
, b
.prio
))
126 return self
.__data
.get("name")
130 return self
.__data
.get("stable")
134 return self
.__data
.get("published")
138 return self
.__data
.get("date")
141 def torrent_hash(self
):
142 h
= self
.__data
.get("torrent_hash")
146 def get_file(self
, type):
147 for file in self
.files
:
148 if file.type == type:
152 class Releases(object):
153 __metaclass__
= Singleton
157 return Databases().webapp
160 return [Release(r
.id) for r
in self
.db
.query("SELECT id FROM releases ORDER BY date DESC")]
162 def get_by_id(self
, id):
164 if id in [r
.id for r
in self
.db
.query("SELECT id FROM releases")]:
167 def get_latest(self
, stable
=1):
168 query
= "SELECT id FROM releases WHERE published='Y' AND"
170 query
+= " stable='Y'"
172 query
+= " stable='N'"
174 query
+= " ORDER BY date DESC LIMIT 1"
176 release
= self
.db
.get(query
)
178 return Release(release
.id)
180 def get_stable(self
):
181 releases
= self
.db
.query("""SELECT id FROM releases
182 WHERE published='Y' AND stable='Y'
183 ORDER BY date DESC""")
185 return [Release(r
.id) for r
in releases
]
187 def get_unstable(self
):
188 releases
= self
.db
.query("""SELECT id FROM releases
189 WHERE published='Y' AND stable='N'
190 ORDER BY date DESC""")
192 return [Release(r
.id) for r
in releases
]
195 releases
= self
.db
.query("""SELECT id FROM releases
196 WHERE published='Y' ORDER BY date DESC""")
198 return [Release(r
.id) for r
in releases
]
201 if __name__
== "__main__":
204 for release
in r
.get_all():