5 from handlers_base
import *
9 class AdminBaseHandler(BaseHandler
):
12 return backend
.Accounts()
16 return backend
.Planet()
20 return backend
.Downloads()
22 def get_current_user(self
):
23 return self
.get_secure_cookie("account")
26 class AdminLoginHandler(AdminBaseHandler
):
28 self
.render("admin-login.html")
31 account
= self
.accounts
.search(self
.get_argument("name"))
33 raise tornado
.web
.HTTPError(403)
35 if account
.check_password(self
.get_argument("password")):
36 self
.set_secure_cookie("account", account
.uid
)
38 raise tornado
.web
.HTTPError(403)
43 class AdminLogoutHandler(AdminBaseHandler
):
45 self
.clear_cookie("account")
49 class AdminIndexHandler(AdminBaseHandler
):
50 @tornado.web
.authenticated
52 self
.render("admin-index.html")
55 class AdminApiPlanetRenderMarkupHandler(AdminBaseHandler
):
56 @tornado.web
.authenticated
58 text
= self
.get_argument("text", "")
62 "html" : self
.planet
.render(text
),
68 class AdminPlanetHandler(AdminBaseHandler
):
69 @tornado.web
.authenticated
71 entries
= self
.planet
.get_entries(limit
=100)
73 self
.render("admin-planet.html", entries
=entries
)
76 class AdminPlanetComposeHandler(AdminBaseHandler
):
77 @tornado.web
.authenticated
78 def get(self
, id=None):
79 entry
= backend
.PlanetEntry(self
.planet
.db
)
82 entry
= self
.planet
.get_entry_by_id(id)
84 self
.render("admin-planet-compose.html", entry
=entry
)
86 @tornado.web
.authenticated
87 def post(self
, id=None):
88 id = self
.get_argument("id", id)
90 entry
= backend
.PlanetEntry(self
.planet
.db
)
93 entry
= self
.planet
.get_entry_by_id(id)
95 entry
.set("title", self
.get_argument("title"))
96 entry
.set("markdown", self
.get_argument("markdown"))
97 entry
.set("author_id", self
.current_user
)
100 self
.planet
.update_entry(entry
)
102 id = self
.planet
.save_entry(entry
)
105 tags
= self
.get_argument("tags", "")
106 entry
.tags
= tags
.split()
108 self
.redirect("/planet")
111 class AdminPlanetEditHandler(AdminPlanetComposeHandler
):
115 class AdminAccountsBaseHandler(AdminBaseHandler
):
119 class AdminAccountsHandler(AdminAccountsBaseHandler
):
120 @tornado.web
.authenticated
122 accounts
= self
.accounts
.list()
123 self
.render("admin-accounts.html", accounts
=accounts
)
126 class AdminAccountsEditHandler(AdminAccountsBaseHandler
):
127 @tornado.web
.authenticated
129 account
= self
.accounts
.search(id)
131 raise tornado
.web
.HTTPError(404)
133 self
.render("admin-accounts-edit.html", account
=account
)
136 class AdminAccountsDeleteHandler(AdminAccountsBaseHandler
):
137 @tornado.web
.authenticated
139 account
= self
.accounts
.search(id)
141 raise tornado
.web
.HTTPError(404)
143 self
.accounts
.delete(id)
144 self
.redirect("/accounts")
147 class AdminMirrorsBaseHandler(AdminBaseHandler
):
150 return backend
.Mirrors()
153 class AdminMirrorsHandler(AdminMirrorsBaseHandler
):
154 @tornado.web
.authenticated
156 mirrors
= self
.mirrors
.list()
158 self
.render("admin-mirrors.html", mirrors
=mirrors
)
161 class AdminMirrorsUpdateHandler(AdminMirrorsBaseHandler
):
162 @tornado.web
.authenticated
164 self
.mirrors
.check_all()
165 self
.redirect("/mirrors")
168 class AdminMirrorsCreateHandler(AdminMirrorsBaseHandler
):
169 @tornado.web
.authenticated
170 def get(self
, id=None):
172 mirror
= self
.db
.get("SELECT * FROM mirrors WHERE id = '%s'", int(id))
174 mirror
= tornado
.database
.Row(
186 self
.render("admin-mirrors-create.html", mirror
=mirror
)
188 @tornado.web
.authenticated
189 def post(self
, id=None):
190 args
= tornado
.database
.Row()
191 for key
in ("id", "hostname", "owner", "location", "path", "releases",
192 "pakfire2", "pakfire3", "disabled"):
193 args
[key
] = self
.get_argument(key
, "")
196 if not self
.mirrors
.get(args
.id):
197 raise tornado
.web
.HTTPError(404)
199 #self.db.execute("""UPDATE mirrors SET
200 # hostname = %s, owner = %s, location = %s, path = %s, mirror = %s,
201 # pakfire2 = %s, pakfire3 = %s, disabled = %s
202 # WHERE id = %s""", args.hostname, args.owner, args.location,
203 # args.path, args.mirror, args.pakfire2, args.pakfire3, args.disabled,
205 self
.db
.update("mirrors", args
.id, **args
)
208 #self.db.execute("""INSERT INTO
209 # mirrors(hostname, owner, location, path, mirror, pakfire2, pakfire3, disabled)
210 # VALUES(%s, %s, %s, %s, %s, %s, %s, %s)""", args.hostname, args.owner,
211 # args.location, args.path, args.mirror, args.pakfire2, args.pakfire3, args.disabled)
212 self
.db
.insert("mirrors", **args
)
214 # Update database information
215 self
.mirrors
.check_all()
217 self
.redirect("/mirrors")
220 class AdminMirrorsEditHandler(AdminMirrorsCreateHandler
):
224 class AdminMirrorsDeleteHandler(AdminMirrorsBaseHandler
):
225 @tornado.web
.authenticated
227 self
.db
.execute("DELETE FROM mirrors WHERE id=%s", id)
228 self
.db
.execute("DELETE FROM mirror_files WHERE mirror=%s", id)
229 self
.redirect("/mirrors")
232 class AdminMirrorsDetailsHandler(AdminMirrorsBaseHandler
):
233 @tornado.web
.authenticated
235 mirror
= self
.mirrors
.get(id)
237 raise tornado
.web
.HTTPError(404)
239 self
.render("admin-mirrors-details.html", mirror
=mirror
)
242 class AdminNewsBaseHandler(AdminBaseHandler
):
245 return self
.backend
.news
248 class AdminNewsHandler(AdminNewsBaseHandler
):
249 @tornado.web
.authenticated
251 news
= self
.news
.list()
253 self
.render("admin-news.html", news
=news
)
256 class AdminNewsCreateHandler(AdminNewsBaseHandler
):
257 @tornado.web
.authenticated
258 def get(self
, id=None):
262 self
.render("admin-news-create.html", news
=news
)
265 class AdminNewsEditHandler(AdminNewsCreateHandler
):
269 class AdminDownloadsHandler(AdminBaseHandler
):
270 @tornado.web
.authenticated
272 self
.render("admin-downloads.html",
273 downloads_total
= self
.downloads
.total
,
274 downloads_today
= self
.downloads
.today
,
275 downloads_yesterday
= self
.downloads
.yesterday
,
276 downloads_locations_today
= self
.downloads
.get_countries("today"),
277 downloads_locations_total
= self
.downloads
.get_countries(),
281 class AdminDownloadsMirrorsHandler(AdminBaseHandler
):
282 @tornado.web
.authenticated
284 self
.render("admin-downloads-mirrors.html",
285 mirror_load_total
= self
.downloads
.get_mirror_load(),
286 mirror_load_today
= self
.downloads
.get_mirror_load("today"),