7 from handlers_base
import *
9 class BuilderListHandler(BaseHandler
):
11 builders
= self
.pakfire
.builders
.get_all()
13 self
.render("builders/list.html", builders
=builders
)
16 class BuilderDetailHandler(BaseHandler
):
17 def get(self
, hostname
):
18 builder
= self
.pakfire
.builders
.get_by_name(hostname
)
20 # Get running and pending jobs.
21 jobs
= self
.pakfire
.jobs
.get_active(builder
=builder
)
22 jobs
+= self
.pakfire
.jobs
.get_next(builder
=builder
)
25 log
= builder
.get_history(limit
=5)
27 self
.render("builders/detail.html", builder
=builder
, jobs
=jobs
, log
=log
)
29 @tornado.web
.authenticated
30 def post(self
, hostname
):
31 if not self
.current_user
.has_perm("maintain_mirrors"):
32 raise tornado
.web
.HTTPError(403, "User is not allowed to do this.")
34 builder
= self
.pakfire
.builders
.get_by_name(hostname
)
36 description
= self
.get_argument("description", "")
37 builder
.update_description(description
)
39 self
.redirect("/builder/%s" % builder
.hostname
)
42 class BuilderNewHandler(BaseHandler
):
44 self
.render("builders/new.html")
46 @tornado.web
.authenticated
48 if not self
.current_user
.has_perm("maintain_builders"):
49 raise tornado
.web
.HTTPError(403)
51 name
= self
.get_argument("name")
53 # Create a new builder.
54 builder
, passphrase
= \
55 backend
.builders
.Builder
.create(self
.pakfire
, name
, user
=self
.current_user
)
57 self
.render("builders/pass.html", action
="new", builder
=builder
,
58 passphrase
=passphrase
)
61 class BuilderEditHandler(BaseHandler
):
62 @tornado.web
.authenticated
63 def get(self
, hostname
):
64 builder
= self
.pakfire
.builders
.get_by_name(hostname
)
66 raise tornado
.web
.HTTPError(404, "Builder not found")
68 self
.render("builders/edit.html", builder
=builder
)
70 @tornado.web
.authenticated
71 def post(self
, hostname
):
72 builder
= self
.pakfire
.builders
.get_by_name(hostname
)
74 raise tornado
.web
.HTTPError(404, "Builder not found: %s" % hostname
)
76 # Check for sufficient right to edit things.
77 if not self
.current_user
.has_perm("maintain_builders"):
78 raise tornado
.web
.HTTPError(403)
80 builder
.enabled
= self
.get_argument("enabled", False)
81 builder
.build_release
= self
.get_argument("build_release", False)
82 builder
.build_scratch
= self
.get_argument("build_scratch", False)
83 builder
.build_test
= self
.get_argument("build_test", False)
86 max_jobs
= self
.get_argument("max_jobs", builder
.max_jobs
)
88 max_jobs
= int(max_jobs
)
92 if not max_jobs
in range(1, 100):
94 builder
.max_jobs
= max_jobs
96 self
.redirect("/builder/%s" % builder
.hostname
)
99 class BuilderRenewPassphraseHandler(BaseHandler
):
100 @tornado.web
.authenticated
102 builder
= self
.pakfire
.builders
.get_by_name(name
)
104 passphrase
= builder
.regenerate_passphrase()
106 self
.render("builders/pass.html", action
="update", builder
=builder
,
107 passphrase
=passphrase
)
110 class BuilderDeleteHandler(BaseHandler
):
111 @tornado.web
.authenticated
113 builder
= self
.pakfire
.builders
.get_by_name(name
)
115 raise tornado
.web
.HTTPError(404, "Builder not found: %s" % name
)
117 # Check for sufficient right to delete this builder.
118 if not self
.current_user
.has_perm("maintain_builders"):
119 raise tornado
.web
.HTTPError(403)
121 confirmed
= self
.get_argument("confirmed", None)
123 builder
.set_status("deleted", user
=self
.current_user
)
125 self
.redirect("/builders")
128 self
.render("builders/delete.html", builder
=builder
)
131 class BuilderStatusChangeHandler(BaseHandler
):
134 @tornado.web
.authenticated
135 def get(self
, hostname
):
136 builder
= self
.pakfire
.builders
.get_by_name(hostname
)
138 raise tornado
.web
.HTTPError(404, "Builder not found: %s" % hostname
)
140 # Check for sufficient right to edit things.
141 if self
.current_user
.has_perm("maintain_builders"):
142 builder
.set_status(self
.status
, user
=self
.current_user
)
144 self
.redirect("/builder/%s" % builder
.name
)
147 class BuilderEnableHander(BuilderStatusChangeHandler
):
151 class BuilderDisableHander(BuilderStatusChangeHandler
):