5 from .. import builders
7 from .handlers_base
import *
9 class BuilderListHandler(BaseHandler
):
11 self
.render("builders/list.html", builders
=self
.backend
.builders
)
14 class BuilderDetailHandler(BaseHandler
):
15 def get(self
, hostname
):
16 builder
= self
.pakfire
.builders
.get_by_name(hostname
)
18 # Get running and pending jobs.
19 jobs
= self
.pakfire
.jobs
.get_active(builder
=builder
)
20 jobs
+= self
.pakfire
.jobs
.get_next(builder
=builder
)
23 log
= builder
.get_history(limit
=5)
25 self
.render("builders/detail.html", builder
=builder
, jobs
=jobs
, log
=log
)
27 @tornado.web
.authenticated
28 def post(self
, hostname
):
29 if not self
.current_user
.has_perm("maintain_mirrors"):
30 raise tornado
.web
.HTTPError(403, "User is not allowed to do this.")
32 builder
= self
.pakfire
.builders
.get_by_name(hostname
)
34 with self
.db
.transaction():
35 builder
.description
= self
.get_argument("description", None)
37 self
.redirect("/builder/%s" % builder
.hostname
)
40 class BuilderNewHandler(BaseHandler
):
42 self
.render("builders/new.html")
44 @tornado.web
.authenticated
46 if not self
.current_user
.has_perm("maintain_builders"):
47 raise tornado
.web
.HTTPError(403)
49 name
= self
.get_argument("name")
51 # Create a new builder.
52 builder
, passphrase
= \
53 self
.backend
.builders
.create(name
, user
=self
.current_user
)
55 self
.render("builders/pass.html", action
="new", builder
=builder
,
56 passphrase
=passphrase
)
59 class BuilderEditHandler(BaseHandler
):
60 @tornado.web
.authenticated
61 def get(self
, hostname
):
62 builder
= self
.pakfire
.builders
.get_by_name(hostname
)
64 raise tornado
.web
.HTTPError(404, "Builder not found")
66 self
.render("builders/edit.html", builder
=builder
)
68 @tornado.web
.authenticated
69 def post(self
, hostname
):
70 builder
= self
.pakfire
.builders
.get_by_name(hostname
)
72 raise tornado
.web
.HTTPError(404, "Builder not found: %s" % hostname
)
74 # Check for sufficient right to edit things.
75 if not self
.current_user
.has_perm("maintain_builders"):
76 raise tornado
.web
.HTTPError(403)
78 builder
.enabled
= self
.get_argument("enabled", False)
79 builder
.build_release
= self
.get_argument("build_release", False)
80 builder
.build_scratch
= self
.get_argument("build_scratch", False)
81 builder
.build_test
= self
.get_argument("build_test", False)
84 max_jobs
= self
.get_argument("max_jobs", builder
.max_jobs
)
86 max_jobs
= int(max_jobs
)
90 if not max_jobs
in range(1, 100):
92 builder
.max_jobs
= max_jobs
94 self
.redirect("/builder/%s" % builder
.hostname
)
97 class BuilderRenewPassphraseHandler(BaseHandler
):
98 @tornado.web
.authenticated
100 builder
= self
.pakfire
.builders
.get_by_name(name
)
102 passphrase
= builder
.regenerate_passphrase()
104 self
.render("builders/pass.html", action
="update", builder
=builder
,
105 passphrase
=passphrase
)
108 class BuilderDeleteHandler(BaseHandler
):
109 @tornado.web
.authenticated
111 builder
= self
.pakfire
.builders
.get_by_name(name
)
113 raise tornado
.web
.HTTPError(404, "Builder not found: %s" % name
)
115 # Check for sufficient right to delete this builder.
116 if not self
.current_user
.has_perm("maintain_builders"):
117 raise tornado
.web
.HTTPError(403)
119 confirmed
= self
.get_argument("confirmed", None)
121 with self
.db
.transaction():
122 builder
.deleted
= True
124 self
.redirect("/builders")
127 self
.render("builders/delete.html", builder
=builder
)
130 class BuilderStatusChangeHandler(BaseHandler
):
133 @tornado.web
.authenticated
134 def get(self
, hostname
):
135 builder
= self
.pakfire
.builders
.get_by_name(hostname
)
137 raise tornado
.web
.HTTPError(404, "Builder not found: %s" % hostname
)
139 # Check for sufficient right to edit things.
140 if self
.current_user
.has_perm("maintain_builders"):
141 with self
.db
.transaction():
142 builder
.enabled
= self
.enabled
144 self
.redirect("/builder/%s" % builder
.name
)
147 class BuilderEnableHander(BuilderStatusChangeHandler
):
151 class BuilderDisableHander(BuilderStatusChangeHandler
):