]> git.ipfire.org Git - pbs.git/blob - src/web/builders.py
web: Drop self.pakfire from BaseHandler
[pbs.git] / src / web / builders.py
1 #!/usr/bin/python
2
3 import tornado.web
4
5 from . import base
6
7 class BuilderListHandler(base.BaseHandler):
8 def get(self):
9 self.render("builders/list.html", builders=self.backend.builders)
10
11
12 class BuilderDetailHandler(base.BaseHandler):
13 def get(self, hostname):
14 builder = self.backend.builders.get_by_name(hostname)
15
16 # Get running and pending jobs.
17 jobs = self.backend.jobs.get_active(builder=builder)
18 jobs += builder.jobqueue
19
20 # Get log.
21 log = builder.get_history(limit=5)
22
23 self.render("builders/detail.html", builder=builder, jobs=jobs, log=log)
24
25 @tornado.web.authenticated
26 def post(self, hostname):
27 if not self.current_user.has_perm("maintain_mirrors"):
28 raise tornado.web.HTTPError(403, "User is not allowed to do this.")
29
30 builder = self.backend.builders.get_by_name(hostname)
31
32 with self.db.transaction():
33 builder.description = self.get_argument("description", None)
34
35 self.redirect("/builder/%s" % builder.hostname)
36
37
38 class BuilderNewHandler(base.BaseHandler):
39 def get(self):
40 self.render("builders/new.html")
41
42 @tornado.web.authenticated
43 def post(self):
44 if not self.current_user.has_perm("maintain_builders"):
45 raise tornado.web.HTTPError(403)
46
47 name = self.get_argument("name")
48
49 # Create a new builder.
50 builder, passphrase = \
51 self.backend.builders.create(name, user=self.current_user)
52
53 self.render("builders/pass.html", action="new", builder=builder,
54 passphrase=passphrase)
55
56
57 class BuilderEditHandler(base.BaseHandler):
58 @tornado.web.authenticated
59 def get(self, hostname):
60 builder = self.backend.builders.get_by_name(hostname)
61 if not builder:
62 raise tornado.web.HTTPError(404, "Builder not found")
63
64 self.render("builders/edit.html", builder=builder)
65
66 @tornado.web.authenticated
67 def post(self, hostname):
68 builder = self.backend.builders.get_by_name(hostname)
69 if not builder:
70 raise tornado.web.HTTPError(404, "Builder not found: %s" % hostname)
71
72 # Check for sufficient right to edit things.
73 if not self.current_user.has_perm("maintain_builders"):
74 raise tornado.web.HTTPError(403)
75
76 with self.db.transaction():
77 builder.enabled = self.get_argument("enabled", False)
78 builder.testmode = self.get_argument("testmode", True)
79
80 # Save max_jobs.
81 max_jobs = self.get_argument("max_jobs", builder.max_jobs)
82 try:
83 max_jobs = int(max_jobs)
84 except TypeError:
85 max_jobs = 1
86
87 if not max_jobs in range(1, 100):
88 max_jobs = 1
89 builder.max_jobs = max_jobs
90
91 self.redirect("/builder/%s" % builder.hostname)
92
93
94 class BuilderRenewPassphraseHandler(base.BaseHandler):
95 @tornado.web.authenticated
96 def get(self, name):
97 builder = self.backend.builders.get_by_name(name)
98
99 passphrase = builder.regenerate_passphrase()
100
101 self.render("builders/pass.html", action="update", builder=builder,
102 passphrase=passphrase)
103
104
105 class BuilderDeleteHandler(base.BaseHandler):
106 @tornado.web.authenticated
107 def get(self, name):
108 builder = self.backend.builders.get_by_name(name)
109 if not builder:
110 raise tornado.web.HTTPError(404, "Builder not found: %s" % name)
111
112 # Check for sufficient right to delete this builder.
113 if not self.current_user.has_perm("maintain_builders"):
114 raise tornado.web.HTTPError(403)
115
116 confirmed = self.get_argument("confirmed", None)
117 if confirmed:
118 with self.db.transaction():
119 builder.deleted = True
120
121 self.redirect("/builders")
122 return
123
124 self.render("builders/delete.html", builder=builder)
125
126
127 class BuilderStatusChangeHandler(base.BaseHandler):
128 enabled = None
129
130 @tornado.web.authenticated
131 def get(self, hostname):
132 builder = self.backend.builders.get_by_name(hostname)
133 if not builder:
134 raise tornado.web.HTTPError(404, "Builder not found: %s" % hostname)
135
136 # Check for sufficient right to edit things.
137 if self.current_user.has_perm("maintain_builders"):
138 with self.db.transaction():
139 builder.enabled = self.enabled
140
141 self.redirect("/builder/%s" % builder.name)
142
143
144 class BuilderEnableHander(BuilderStatusChangeHandler):
145 enabled = True
146
147
148 class BuilderDisableHander(BuilderStatusChangeHandler):
149 enabled = False