]> git.ipfire.org Git - ipfire.org.git/blame - src/web/handlers_admin.py
Fix relative imports
[ipfire.org.git] / src / web / 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
940227cb 8class AdminBaseHandler(BaseHandler):
66862195 9 pass
940227cb
MT
10
11
12class AdminIndexHandler(AdminBaseHandler):
13 @tornado.web.authenticated
14 def get(self):
15 self.render("admin-index.html")
16
17
18class 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
30class 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
38class 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
64class 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
79class 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
92class AdminAccountsBaseHandler(AdminBaseHandler):
27066195 93 pass
940227cb
MT
94
95
96class 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
103class 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
113class 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
124class AdminMirrorsBaseHandler(AdminBaseHandler):
9068dba1 125 pass
940227cb
MT
126
127
128class 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
136class AdminMirrorsUpdateHandler(AdminMirrorsBaseHandler):
137 @tornado.web.authenticated
138 def get(self):
139 self.mirrors.check_all()
140 self.redirect("/mirrors")
141
142
143class 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
195class AdminMirrorsEditHandler(AdminMirrorsCreateHandler):
196 pass
197
198
199class 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
207class 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
217class AdminNewsBaseHandler(AdminBaseHandler):
218 @property
219 def news(self):
220 return self.backend.news
221
222
223class 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
231class 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
240class AdminNewsEditHandler(AdminNewsCreateHandler):
241 pass
60024cc8
MT
242
243
244class 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
256class 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 )