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