]>
Commit | Line | Data |
---|---|---|
940227cb MT |
1 | #!/usr/bin/python |
2 | ||
67ab72b8 | 3 | import datetime |
940227cb MT |
4 | import tornado.web |
5 | ||
6 | from handlers_base import * | |
7 | ||
940227cb | 8 | class AdminBaseHandler(BaseHandler): |
66862195 | 9 | pass |
940227cb MT |
10 | |
11 | ||
12 | class AdminIndexHandler(AdminBaseHandler): | |
13 | @tornado.web.authenticated | |
14 | def get(self): | |
15 | self.render("admin-index.html") | |
16 | ||
17 | ||
18 | class AdminApiPlanetRenderMarkupHandler(AdminBaseHandler): | |
19 | @tornado.web.authenticated | |
0e824faf | 20 | def post(self): |
940227cb MT |
21 | text = self.get_argument("text", "") |
22 | ||
23 | # Render markup | |
0e824faf MT |
24 | output = { |
25 | "html" : self.planet.render(text), | |
26 | } | |
67ab72b8 | 27 | self.finish(output) |
940227cb MT |
28 | |
29 | ||
30 | class AdminPlanetHandler(AdminBaseHandler): | |
31 | @tornado.web.authenticated | |
32 | def get(self): | |
66862195 | 33 | entries = self.planet.get_entries(status=None, limit=50) |
940227cb MT |
34 | |
35 | self.render("admin-planet.html", entries=entries) | |
36 | ||
37 | ||
38 | class AdminPlanetComposeHandler(AdminBaseHandler): | |
39 | @tornado.web.authenticated | |
67ab72b8 MT |
40 | def get(self, slug=None): |
41 | entry = None | |
27066195 | 42 | |
67ab72b8 MT |
43 | if slug: |
44 | entry = self.planet.get_entry_by_slug(slug) | |
45 | if not entry: | |
46 | raise tornado.web.HTTPError(404) | |
940227cb MT |
47 | |
48 | self.render("admin-planet-compose.html", entry=entry) | |
49 | ||
50 | @tornado.web.authenticated | |
67ab72b8 MT |
51 | def post(self): |
52 | title = self.get_argument("title") | |
53 | markdown = self.get_argument("markdown") | |
940227cb | 54 | |
67ab72b8 | 55 | status = self.get_argument("status", "draft") |
864437e2 | 56 | assert status in ("draft", "published") |
940227cb | 57 | |
67ab72b8 | 58 | entry = self.planet.create(title=title, markdown=markdown, |
e0cafd59 | 59 | author=self.current_user, status=status) |
940227cb | 60 | |
67ab72b8 | 61 | self.redirect("/planet") |
00af5cf1 | 62 | |
67ab72b8 MT |
63 | |
64 | class AdminPlanetEditHandler(AdminPlanetComposeHandler): | |
65 | @tornado.web.authenticated | |
66 | def post(self, slug): | |
67 | entry = self.planet.get_entry_by_slug(slug) | |
68 | if not entry: | |
69 | raise tornado.web.HTTPError(404) | |
70 | ||
71 | entry.title = self.get_argument("title") | |
72 | entry.markdown = self.get_argument("markdown") | |
67ab72b8 MT |
73 | |
74 | entry.status = self.get_argument("status", "draft") | |
940227cb MT |
75 | |
76 | self.redirect("/planet") | |
77 | ||
78 | ||
67ab72b8 MT |
79 | class AdminPlanetPublishHandler(AdminBaseHandler): |
80 | @tornado.web.authenticated | |
81 | def get(self, slug): | |
82 | entry = self.planet.get_entry_by_slug(slug) | |
83 | if not entry: | |
84 | raise tornado.web.HTTPError(404) | |
85 | ||
86 | entry.status = "published" | |
87 | entry.published = datetime.datetime.utcnow() | |
88 | ||
89 | self.redirect("/planet") | |
940227cb MT |
90 | |
91 | ||
92 | class AdminAccountsBaseHandler(AdminBaseHandler): | |
27066195 | 93 | pass |
940227cb MT |
94 | |
95 | ||
96 | class AdminAccountsHandler(AdminAccountsBaseHandler): | |
97 | @tornado.web.authenticated | |
98 | def get(self): | |
27066195 | 99 | accounts = self.accounts.list() |
940227cb MT |
100 | self.render("admin-accounts.html", accounts=accounts) |
101 | ||
102 | ||
103 | class AdminAccountsEditHandler(AdminAccountsBaseHandler): | |
104 | @tornado.web.authenticated | |
105 | def get(self, id): | |
106 | account = self.accounts.search(id) | |
107 | if not account: | |
108 | raise tornado.web.HTTPError(404) | |
109 | ||
110 | self.render("admin-accounts-edit.html", account=account) | |
111 | ||
112 | ||
113 | class AdminAccountsDeleteHandler(AdminAccountsBaseHandler): | |
114 | @tornado.web.authenticated | |
115 | def get(self, id): | |
116 | account = self.accounts.search(id) | |
117 | if not account: | |
118 | raise tornado.web.HTTPError(404) | |
119 | ||
120 | self.accounts.delete(id) | |
121 | self.redirect("/accounts") | |
122 | ||
123 | ||
124 | class AdminMirrorsBaseHandler(AdminBaseHandler): | |
9068dba1 | 125 | pass |
940227cb MT |
126 | |
127 | ||
128 | class AdminMirrorsHandler(AdminMirrorsBaseHandler): | |
129 | @tornado.web.authenticated | |
130 | def get(self): | |
9068dba1 | 131 | mirrors = self.mirrors.get_all() |
940227cb MT |
132 | |
133 | self.render("admin-mirrors.html", mirrors=mirrors) | |
134 | ||
135 | ||
136 | class AdminMirrorsUpdateHandler(AdminMirrorsBaseHandler): | |
137 | @tornado.web.authenticated | |
138 | def get(self): | |
139 | self.mirrors.check_all() | |
140 | self.redirect("/mirrors") | |
141 | ||
142 | ||
143 | class AdminMirrorsCreateHandler(AdminMirrorsBaseHandler): | |
144 | @tornado.web.authenticated | |
145 | def get(self, id=None): | |
146 | if id: | |
9068dba1 | 147 | mirror = self.db.get("SELECT * FROM mirrors WHERE id = %s", id) |
940227cb MT |
148 | else: |
149 | mirror = tornado.database.Row( | |
150 | id="", | |
151 | hostname="", | |
152 | owner="", | |
153 | location="", | |
154 | path="/", | |
155 | releases="Y", | |
156 | pakfire2="Y", | |
157 | pakfire3="Y", | |
158 | disabled="N" | |
159 | ) | |
160 | ||
161 | self.render("admin-mirrors-create.html", mirror=mirror) | |
162 | ||
163 | @tornado.web.authenticated | |
164 | def post(self, id=None): | |
165 | args = tornado.database.Row() | |
166 | for key in ("id", "hostname", "owner", "location", "path", "releases", | |
167 | "pakfire2", "pakfire3", "disabled"): | |
168 | args[key] = self.get_argument(key, "") | |
169 | ||
170 | if args.id: | |
171 | if not self.mirrors.get(args.id): | |
172 | raise tornado.web.HTTPError(404) | |
173 | ||
174 | #self.db.execute("""UPDATE mirrors SET | |
175 | # hostname = %s, owner = %s, location = %s, path = %s, mirror = %s, | |
176 | # pakfire2 = %s, pakfire3 = %s, disabled = %s | |
177 | # WHERE id = %s""", args.hostname, args.owner, args.location, | |
178 | # args.path, args.mirror, args.pakfire2, args.pakfire3, args.disabled, | |
179 | # args.id) | |
180 | self.db.update("mirrors", args.id, **args) | |
181 | ||
182 | else: | |
183 | #self.db.execute("""INSERT INTO | |
184 | # mirrors(hostname, owner, location, path, mirror, pakfire2, pakfire3, disabled) | |
185 | # VALUES(%s, %s, %s, %s, %s, %s, %s, %s)""", args.hostname, args.owner, | |
186 | # args.location, args.path, args.mirror, args.pakfire2, args.pakfire3, args.disabled) | |
187 | self.db.insert("mirrors", **args) | |
188 | ||
189 | # Update database information | |
190 | self.mirrors.check_all() | |
191 | ||
192 | self.redirect("/mirrors") | |
193 | ||
194 | ||
195 | class AdminMirrorsEditHandler(AdminMirrorsCreateHandler): | |
196 | pass | |
197 | ||
198 | ||
199 | class AdminMirrorsDeleteHandler(AdminMirrorsBaseHandler): | |
200 | @tornado.web.authenticated | |
201 | def get(self, id): | |
202 | self.db.execute("DELETE FROM mirrors WHERE id=%s", id) | |
203 | self.db.execute("DELETE FROM mirror_files WHERE mirror=%s", id) | |
204 | self.redirect("/mirrors") | |
205 | ||
206 | ||
207 | class AdminMirrorsDetailsHandler(AdminMirrorsBaseHandler): | |
208 | @tornado.web.authenticated | |
209 | def get(self, id): | |
210 | mirror = self.mirrors.get(id) | |
211 | if not mirror: | |
212 | raise tornado.web.HTTPError(404) | |
213 | ||
214 | self.render("admin-mirrors-details.html", mirror=mirror) | |
215 | ||
216 | ||
217 | class AdminNewsBaseHandler(AdminBaseHandler): | |
218 | @property | |
219 | def news(self): | |
220 | return self.backend.news | |
221 | ||
222 | ||
223 | class AdminNewsHandler(AdminNewsBaseHandler): | |
224 | @tornado.web.authenticated | |
225 | def get(self): | |
9068dba1 | 226 | news = self.news.get_all() |
940227cb MT |
227 | |
228 | self.render("admin-news.html", news=news) | |
229 | ||
230 | ||
231 | class AdminNewsCreateHandler(AdminNewsBaseHandler): | |
232 | @tornado.web.authenticated | |
233 | def get(self, id=None): | |
234 | # if XXX | |
235 | ||
236 | ||
237 | self.render("admin-news-create.html", news=news) | |
238 | ||
239 | ||
240 | class AdminNewsEditHandler(AdminNewsCreateHandler): | |
241 | pass | |
60024cc8 MT |
242 | |
243 | ||
244 | class AdminDownloadsHandler(AdminBaseHandler): | |
245 | @tornado.web.authenticated | |
246 | def get(self): | |
247 | self.render("admin-downloads.html", | |
248 | downloads_total = self.downloads.total, | |
249 | downloads_today = self.downloads.today, | |
250 | downloads_yesterday = self.downloads.yesterday, | |
251 | downloads_locations_today = self.downloads.get_countries("today"), | |
252 | downloads_locations_total = self.downloads.get_countries(), | |
253 | ) | |
254 | ||
255 | ||
256 | class AdminDownloadsMirrorsHandler(AdminBaseHandler): | |
257 | @tornado.web.authenticated | |
258 | def get(self): | |
259 | self.render("admin-downloads-mirrors.html", | |
260 | mirror_load_total = self.downloads.get_mirror_load(), | |
261 | mirror_load_today = self.downloads.get_mirror_load("today"), | |
262 | ) |