]>
Commit | Line | Data |
---|---|---|
9137135a MT |
1 | #!/usr/bin/python |
2 | ||
f6e6ff79 MT |
3 | import tornado.web |
4 | ||
2c909128 | 5 | from .. import builders |
9137135a | 6 | |
2c909128 | 7 | from .handlers_base import * |
9137135a MT |
8 | |
9 | class BuilderListHandler(BaseHandler): | |
10 | def get(self): | |
11 | builders = self.pakfire.builders.get_all() | |
f6e6ff79 | 12 | |
2ae27978 | 13 | self.render("builders/list.html", builders=builders) |
9137135a MT |
14 | |
15 | ||
16 | class BuilderDetailHandler(BaseHandler): | |
17 | def get(self, hostname): | |
18 | builder = self.pakfire.builders.get_by_name(hostname) | |
19 | ||
163d9d8b MT |
20 | # Get running and pending jobs. |
21 | jobs = self.pakfire.jobs.get_active(builder=builder) | |
22 | jobs += self.pakfire.jobs.get_next(builder=builder) | |
23 | ||
24 | # Get log. | |
25 | log = builder.get_history(limit=5) | |
26 | ||
2ae27978 | 27 | self.render("builders/detail.html", builder=builder, jobs=jobs, log=log) |
9137135a | 28 | |
f6e6ff79 MT |
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.") | |
33 | ||
34 | builder = self.pakfire.builders.get_by_name(hostname) | |
35 | ||
3e990438 MT |
36 | with self.db.transaction(): |
37 | builder.description = self.get_argument("description", None) | |
f6e6ff79 MT |
38 | |
39 | self.redirect("/builder/%s" % builder.hostname) | |
40 | ||
9137135a MT |
41 | |
42 | class BuilderNewHandler(BaseHandler): | |
43 | def get(self): | |
2ae27978 | 44 | self.render("builders/new.html") |
9137135a | 45 | |
f6e6ff79 | 46 | @tornado.web.authenticated |
9137135a | 47 | def post(self): |
f6e6ff79 MT |
48 | if not self.current_user.has_perm("maintain_builders"): |
49 | raise tornado.web.HTTPError(403) | |
50 | ||
9137135a MT |
51 | name = self.get_argument("name") |
52 | ||
53 | # Create a new builder. | |
f6e6ff79 | 54 | builder, passphrase = \ |
2c909128 | 55 | builders.Builder.create(self.pakfire, name, user=self.current_user) |
9137135a | 56 | |
2ae27978 | 57 | self.render("builders/pass.html", action="new", builder=builder, |
f6e6ff79 | 58 | passphrase=passphrase) |
9137135a MT |
59 | |
60 | ||
61 | class BuilderEditHandler(BaseHandler): | |
62 | @tornado.web.authenticated | |
63 | def get(self, hostname): | |
64 | builder = self.pakfire.builders.get_by_name(hostname) | |
65 | if not builder: | |
66 | raise tornado.web.HTTPError(404, "Builder not found") | |
67 | ||
2ae27978 | 68 | self.render("builders/edit.html", builder=builder) |
9137135a MT |
69 | |
70 | @tornado.web.authenticated | |
71 | def post(self, hostname): | |
72 | builder = self.pakfire.builders.get_by_name(hostname) | |
73 | if not builder: | |
f6e6ff79 MT |
74 | raise tornado.web.HTTPError(404, "Builder not found: %s" % hostname) |
75 | ||
76 | # Check for sufficient right to edit things. | |
77 | if not self.current_user.has_perm("maintain_builders"): | |
78 | raise tornado.web.HTTPError(403) | |
9137135a | 79 | |
f6e6ff79 MT |
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) | |
9137135a MT |
84 | |
85 | # Save max_jobs. | |
86 | max_jobs = self.get_argument("max_jobs", builder.max_jobs) | |
87 | try: | |
88 | max_jobs = int(max_jobs) | |
89 | except TypeError: | |
90 | max_jobs = 1 | |
91 | ||
f6e6ff79 | 92 | if not max_jobs in range(1, 100): |
9137135a MT |
93 | max_jobs = 1 |
94 | builder.max_jobs = max_jobs | |
95 | ||
96 | self.redirect("/builder/%s" % builder.hostname) | |
97 | ||
98 | ||
99 | class BuilderRenewPassphraseHandler(BaseHandler): | |
f6e6ff79 | 100 | @tornado.web.authenticated |
9137135a MT |
101 | def get(self, name): |
102 | builder = self.pakfire.builders.get_by_name(name) | |
103 | ||
f6e6ff79 | 104 | passphrase = builder.regenerate_passphrase() |
9137135a | 105 | |
2ae27978 | 106 | self.render("builders/pass.html", action="update", builder=builder, |
f6e6ff79 | 107 | passphrase=passphrase) |
9137135a MT |
108 | |
109 | ||
110 | class BuilderDeleteHandler(BaseHandler): | |
f6e6ff79 | 111 | @tornado.web.authenticated |
9137135a MT |
112 | def get(self, name): |
113 | builder = self.pakfire.builders.get_by_name(name) | |
f6e6ff79 MT |
114 | if not builder: |
115 | raise tornado.web.HTTPError(404, "Builder not found: %s" % name) | |
116 | ||
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) | |
9137135a MT |
120 | |
121 | confirmed = self.get_argument("confirmed", None) | |
122 | if confirmed: | |
f6e6ff79 MT |
123 | builder.set_status("deleted", user=self.current_user) |
124 | ||
9137135a MT |
125 | self.redirect("/builders") |
126 | return | |
127 | ||
2ae27978 | 128 | self.render("builders/delete.html", builder=builder) |
f6e6ff79 MT |
129 | |
130 | ||
131 | class BuilderStatusChangeHandler(BaseHandler): | |
132 | new_status = None | |
133 | ||
134 | @tornado.web.authenticated | |
135 | def get(self, hostname): | |
136 | builder = self.pakfire.builders.get_by_name(hostname) | |
137 | if not builder: | |
138 | raise tornado.web.HTTPError(404, "Builder not found: %s" % hostname) | |
139 | ||
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) | |
143 | ||
144 | self.redirect("/builder/%s" % builder.name) | |
145 | ||
146 | ||
147 | class BuilderEnableHander(BuilderStatusChangeHandler): | |
148 | status = "enabled" | |
149 | ||
150 | ||
151 | class BuilderDisableHander(BuilderStatusChangeHandler): | |
152 | status = "disabled" |