]> git.ipfire.org Git - people/shoehn/ipfire.org.git/blame - www/webapp/datastore/builds.py
Some very big changes I cannot break down to distinct commits.
[people/shoehn/ipfire.org.git] / www / webapp / datastore / builds.py
CommitLineData
81675874 1#!/usr/bin/python
2
3import os
4import time
5
6from helpers import size
81675874 7
feb02477 8def find(info):
81675874 9 ret = []
d979645d
MT
10 for item in info["nightly_builds"]:
11 path = item.get("path", None)
12 if not path or not os.path.exists(path):
13 continue
14
15 for host in os.listdir(path):
16 for build in os.listdir(os.path.join(path, host)):
17 ret.append(Build(os.path.join(path, host, build)))
81675874 18
19 return ret
20
21class Build(object):
22 def __init__(self, path):
23 self.path = path
24
25 self.__buildinfo = None
26
27 @property
28 def buildinfo(self):
29 if not self.__buildinfo:
30 f = open(os.path.join(self.path, ".buildinfo"))
31 self.__buildinfo = f.readlines()
32 f.close()
33 return self.__buildinfo
34
35 def get(self, key):
36 key = key.upper() + "="
37 for line in self.buildinfo:
38 if line.startswith(key):
39 return line[len(key):].strip("\n")
40
41 @property
42 def build_host(self):
43 return self.get("hostname")
44
45 @property
46 def release(self):
47 return self.get("release")
48
49 @property
50 def time(self):
51 return time.localtime(float(self.get("date")))
52
53 @property
54 def date(self):
55 return time.strftime("%a, %Y-%m-%d %H:%M", self.time)
56
57 @property
58 def arch(self):
59 return self.get("arch")
60
61 @property
62 def iso(self):
63 return self.get("iso")
64
65 @property
66 def size(self):
67 return size(os.path.getsize(os.path.join(self.path, self.iso)))
68
69 @property
70 def packages(self):
71 path = "%s/packages_%s" % (self.path, self.arch,)
72 if not os.path.exists(path):
73 return []
74 return os.listdir(path)
75
76 @property
77 def pxe(self):
78 dir = "/srv/www/ipfire.org/pxe"
79 if not os.path.isdir(dir):
80 return ""
81
82 for iso in os.listdir(dir):
83 # Skip non-iso files
84 if not iso.endswith(".iso"):
85 continue
86 if os.readlink(os.path.join(dir, iso)) == os.path.join(self.path, self.iso):
87 return "[PXE]"
88 return ""