]> git.ipfire.org Git - people/jschlag/pbs.git/blob - src/buildservice/updates.py
Drop concept of non-public builds
[people/jschlag/pbs.git] / src / buildservice / updates.py
1 #!/usr/bin/python
2
3 from . import base
4
5 class Updates(base.Object):
6 def __init__(self, pakfire):
7 base.Object.__init__(self, pakfire)
8
9 def get(self, type, distro=None, limit=None, offset=None):
10 assert type in ("stable", "unstable", "testing")
11
12 query = "SELECT * FROM repositories_builds \
13 JOIN builds ON builds.id = repositories_builds.build_id \
14 WHERE builds.type = 'release' AND \
15 repositories_builds.repo_id IN \
16 (SELECT id FROM repositories WHERE type = %s)"
17 args = [type,]
18
19 if distro:
20 query += " AND builds.distro_id = %s"
21 args.append(distro.id)
22
23 query += " ORDER BY time_added DESC"
24
25 if limit:
26 if offset:
27 query += " LIMIT %s,%s"
28 args += [offset, limit]
29 else:
30 query += " LIMIT %s"
31 args.append(limit)
32
33 updates = []
34 for row in self.db.query(query, *args):
35 update = Update(self.pakfire, row)
36 updates.append(update)
37
38 return updates
39
40 def get_latest(self, type):
41 return self.get(type=type, limit=5)
42
43
44
45 class Update(base.Object):
46 def __init__(self, pakfire, data):
47 base.Object.__init__(self, pakfire)
48
49 self.data = data
50
51 self._build = None
52
53 @property
54 def build(self):
55 if self._build is None:
56 self._build = self.pakfire.builds.get_by_id(self.data.build_id)
57 assert self._build
58
59 return self._build
60
61 @property
62 def name(self):
63 return self.build.name
64
65 @property
66 def description(self):
67 return self.build.message
68
69 @property
70 def summary(self):
71 line = None
72 for line in self.description.splitlines():
73 if not line:
74 continue
75
76 break
77
78 if len(line) >= 60:
79 line = "%s..." % line[:60]
80
81 return line
82
83 @property
84 def severity(self):
85 return self.build.severity
86
87 @property
88 def distro(self):
89 return self.build.distro
90
91 @property
92 def score(self):
93 return self.build.score
94
95 @property
96 def when(self):
97 return self.data.time_added