]> git.ipfire.org Git - people/shoehn/ipfire.org.git/blame - www/webapp/handlers_admin.py
manager: Fix crash is release directory does not exist, yet.
[people/shoehn/ipfire.org.git] / www / webapp / handlers_admin.py
CommitLineData
940227cb
MT
1#!/usr/bin/python
2
3# XXX most of this is broken
4
5import tornado.web
6
7from handlers_base import *
8
27066195 9import backend
940227cb
MT
10
11class AdminBaseHandler(BaseHandler):
27066195
MT
12 @property
13 def accounts(self):
14 return backend.Accounts()
15
16 @property
17 def planet(self):
18 return backend.Planet()
19
940227cb
MT
20 def get_current_user(self):
21 return self.get_secure_cookie("account")
22
23
24class AdminLoginHandler(AdminBaseHandler):
25 def get(self):
26 self.render("admin-login.html")
27
28 def post(self):
29 account = self.accounts.search(self.get_argument("name"))
30 if not account:
31 raise tornado.web.HTTPError(403)
32
33 if account.check_password(self.get_argument("password")):
34 self.set_secure_cookie("account", account.uid)
35 else:
36 raise tornado.web.HTTPError(403)
37
38 self.redirect("/")
39
40
41class AdminLogoutHandler(AdminBaseHandler):
42 def get(self):
43 self.clear_cookie("account")
44 self.redirect("/")
45
46
47class AdminIndexHandler(AdminBaseHandler):
48 @tornado.web.authenticated
49 def get(self):
50 self.render("admin-index.html")
51
52
53class AdminApiPlanetRenderMarkupHandler(AdminBaseHandler):
54 @tornado.web.authenticated
55 def get(self):
56 text = self.get_argument("text", "")
57
58 # Render markup
27066195 59 self.write(self.planet.render(text))
940227cb
MT
60 self.finish()
61
62
63class AdminPlanetHandler(AdminBaseHandler):
64 @tornado.web.authenticated
65 def get(self):
27066195 66 entries = self.planet.get_entries(limit=100)
940227cb
MT
67
68 self.render("admin-planet.html", entries=entries)
69
70
71class AdminPlanetComposeHandler(AdminBaseHandler):
72 @tornado.web.authenticated
73 def get(self, id=None):
27066195
MT
74 entry = backend.PlanetEntry()
75
940227cb 76 if id:
27066195 77 entry = self.planet.get_entry_by_id(id)
940227cb
MT
78
79 self.render("admin-planet-compose.html", entry=entry)
80
81 @tornado.web.authenticated
82 def post(self, id=None):
83 id = self.get_argument("id", id)
940227cb 84
27066195 85 entry = backend.PlanetEntry()
940227cb 86
27066195
MT
87 if id:
88 entry = self.planet.get_entry_by_id(id)
940227cb 89
27066195
MT
90 entry.set("title", self.get_argument("title"))
91 entry.set("markdown", self.get_argument("markdown"))
92 entry.set("author_id", self.current_user)
940227cb 93
27066195
MT
94 if id:
95 self.planet.update_entry(entry)
940227cb 96 else:
27066195 97 self.planet.save_entry(entry)
940227cb
MT
98
99 self.redirect("/planet")
100
101
102class AdminPlanetEditHandler(AdminPlanetComposeHandler):
103 pass
104
105
106class AdminAccountsBaseHandler(AdminBaseHandler):
27066195 107 pass
940227cb
MT
108
109
110class AdminAccountsHandler(AdminAccountsBaseHandler):
111 @tornado.web.authenticated
112 def get(self):
27066195 113 accounts = self.accounts.list()
940227cb
MT
114 self.render("admin-accounts.html", accounts=accounts)
115
116
117class AdminAccountsEditHandler(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.render("admin-accounts-edit.html", account=account)
125
126
127class AdminAccountsDeleteHandler(AdminAccountsBaseHandler):
128 @tornado.web.authenticated
129 def get(self, id):
130 account = self.accounts.search(id)
131 if not account:
132 raise tornado.web.HTTPError(404)
133
134 self.accounts.delete(id)
135 self.redirect("/accounts")
136
137
138class AdminMirrorsBaseHandler(AdminBaseHandler):
940227cb
MT
139 @property
140 def mirrors(self):
27066195 141 return backend.Mirrors()
940227cb
MT
142
143
144class AdminMirrorsHandler(AdminMirrorsBaseHandler):
145 @tornado.web.authenticated
146 def get(self):
147 mirrors = self.mirrors.list()
148
149 self.render("admin-mirrors.html", mirrors=mirrors)
150
151
152class AdminMirrorsUpdateHandler(AdminMirrorsBaseHandler):
153 @tornado.web.authenticated
154 def get(self):
155 self.mirrors.check_all()
156 self.redirect("/mirrors")
157
158
159class AdminMirrorsCreateHandler(AdminMirrorsBaseHandler):
160 @tornado.web.authenticated
161 def get(self, id=None):
162 if id:
163 mirror = self.db.get("SELECT * FROM mirrors WHERE id = '%s'", int(id))
164 else:
165 mirror = tornado.database.Row(
166 id="",
167 hostname="",
168 owner="",
169 location="",
170 path="/",
171 releases="Y",
172 pakfire2="Y",
173 pakfire3="Y",
174 disabled="N"
175 )
176
177 self.render("admin-mirrors-create.html", mirror=mirror)
178
179 @tornado.web.authenticated
180 def post(self, id=None):
181 args = tornado.database.Row()
182 for key in ("id", "hostname", "owner", "location", "path", "releases",
183 "pakfire2", "pakfire3", "disabled"):
184 args[key] = self.get_argument(key, "")
185
186 if args.id:
187 if not self.mirrors.get(args.id):
188 raise tornado.web.HTTPError(404)
189
190 #self.db.execute("""UPDATE mirrors SET
191 # hostname = %s, owner = %s, location = %s, path = %s, mirror = %s,
192 # pakfire2 = %s, pakfire3 = %s, disabled = %s
193 # WHERE id = %s""", args.hostname, args.owner, args.location,
194 # args.path, args.mirror, args.pakfire2, args.pakfire3, args.disabled,
195 # args.id)
196 self.db.update("mirrors", args.id, **args)
197
198 else:
199 #self.db.execute("""INSERT INTO
200 # mirrors(hostname, owner, location, path, mirror, pakfire2, pakfire3, disabled)
201 # VALUES(%s, %s, %s, %s, %s, %s, %s, %s)""", args.hostname, args.owner,
202 # args.location, args.path, args.mirror, args.pakfire2, args.pakfire3, args.disabled)
203 self.db.insert("mirrors", **args)
204
205 # Update database information
206 self.mirrors.check_all()
207
208 self.redirect("/mirrors")
209
210
211class AdminMirrorsEditHandler(AdminMirrorsCreateHandler):
212 pass
213
214
215class AdminMirrorsDeleteHandler(AdminMirrorsBaseHandler):
216 @tornado.web.authenticated
217 def get(self, id):
218 self.db.execute("DELETE FROM mirrors WHERE id=%s", id)
219 self.db.execute("DELETE FROM mirror_files WHERE mirror=%s", id)
220 self.redirect("/mirrors")
221
222
223class AdminMirrorsDetailsHandler(AdminMirrorsBaseHandler):
224 @tornado.web.authenticated
225 def get(self, id):
226 mirror = self.mirrors.get(id)
227 if not mirror:
228 raise tornado.web.HTTPError(404)
229
230 self.render("admin-mirrors-details.html", mirror=mirror)
231
232
233class AdminNewsBaseHandler(AdminBaseHandler):
234 @property
235 def news(self):
236 return self.backend.news
237
238
239class AdminNewsHandler(AdminNewsBaseHandler):
240 @tornado.web.authenticated
241 def get(self):
242 news = self.news.list()
243
244 self.render("admin-news.html", news=news)
245
246
247class AdminNewsCreateHandler(AdminNewsBaseHandler):
248 @tornado.web.authenticated
249 def get(self, id=None):
250 # if XXX
251
252
253 self.render("admin-news-create.html", news=news)
254
255
256class AdminNewsEditHandler(AdminNewsCreateHandler):
257 pass