6 from handlers_base
import *
10 class AdminBaseHandler(BaseHandler
):
13 return backend
.Downloads()
15 def get_current_user(self
):
16 return self
.get_secure_cookie("account")
19 class AdminLoginHandler(AdminBaseHandler
):
21 self
.render("admin-login.html")
24 account
= self
.accounts
.search(self
.get_argument("name"))
26 raise tornado
.web
.HTTPError(403)
28 if account
.check_password(self
.get_argument("password")):
29 self
.set_secure_cookie("account", account
.uid
)
31 raise tornado
.web
.HTTPError(403)
36 class AdminLogoutHandler(AdminBaseHandler
):
38 self
.clear_cookie("account")
42 class AdminIndexHandler(AdminBaseHandler
):
43 @tornado.web
.authenticated
45 self
.render("admin-index.html")
48 class AdminApiPlanetRenderMarkupHandler(AdminBaseHandler
):
49 @tornado.web
.authenticated
51 text
= self
.get_argument("text", "")
55 "html" : self
.planet
.render(text
),
60 class AdminPlanetHandler(AdminBaseHandler
):
61 @tornado.web
.authenticated
63 entries
= self
.planet
.get_entries(status
=None, limit
=100)
65 self
.render("admin-planet.html", entries
=entries
)
68 class AdminPlanetComposeHandler(AdminBaseHandler
):
69 @tornado.web
.authenticated
70 def get(self
, slug
=None):
74 entry
= self
.planet
.get_entry_by_slug(slug
)
76 raise tornado
.web
.HTTPError(404)
78 self
.render("admin-planet-compose.html", entry
=entry
)
80 @tornado.web
.authenticated
82 title
= self
.get_argument("title")
83 markdown
= self
.get_argument("markdown")
84 tags
= self
.get_argument("tags", "")
86 status
= self
.get_argument("status", "draft")
88 author
= self
.accounts
.find(self
.current_user
)
90 entry
= self
.planet
.create(title
=title
, markdown
=markdown
,
91 author
=author
, status
=status
, tags
=tags
.split())
93 self
.redirect("/planet")
96 class AdminPlanetEditHandler(AdminPlanetComposeHandler
):
97 @tornado.web
.authenticated
99 entry
= self
.planet
.get_entry_by_slug(slug
)
101 raise tornado
.web
.HTTPError(404)
103 entry
.title
= self
.get_argument("title")
104 entry
.markdown
= self
.get_argument("markdown")
105 entry
.tags
= self
.get_argument("tags", "").split()
107 entry
.status
= self
.get_argument("status", "draft")
109 self
.redirect("/planet")
112 class AdminPlanetPublishHandler(AdminBaseHandler
):
113 @tornado.web
.authenticated
115 entry
= self
.planet
.get_entry_by_slug(slug
)
117 raise tornado
.web
.HTTPError(404)
119 entry
.status
= "published"
120 entry
.published
= datetime
.datetime
.utcnow()
122 self
.redirect("/planet")
125 class AdminAccountsBaseHandler(AdminBaseHandler
):
129 class AdminAccountsHandler(AdminAccountsBaseHandler
):
130 @tornado.web
.authenticated
132 accounts
= self
.accounts
.list()
133 self
.render("admin-accounts.html", accounts
=accounts
)
136 class AdminAccountsEditHandler(AdminAccountsBaseHandler
):
137 @tornado.web
.authenticated
139 account
= self
.accounts
.search(id)
141 raise tornado
.web
.HTTPError(404)
143 self
.render("admin-accounts-edit.html", account
=account
)
146 class AdminAccountsDeleteHandler(AdminAccountsBaseHandler
):
147 @tornado.web
.authenticated
149 account
= self
.accounts
.search(id)
151 raise tornado
.web
.HTTPError(404)
153 self
.accounts
.delete(id)
154 self
.redirect("/accounts")
157 class AdminMirrorsBaseHandler(AdminBaseHandler
):
160 return backend
.Mirrors()
163 class AdminMirrorsHandler(AdminMirrorsBaseHandler
):
164 @tornado.web
.authenticated
166 mirrors
= self
.mirrors
.list()
168 self
.render("admin-mirrors.html", mirrors
=mirrors
)
171 class AdminMirrorsUpdateHandler(AdminMirrorsBaseHandler
):
172 @tornado.web
.authenticated
174 self
.mirrors
.check_all()
175 self
.redirect("/mirrors")
178 class AdminMirrorsCreateHandler(AdminMirrorsBaseHandler
):
179 @tornado.web
.authenticated
180 def get(self
, id=None):
182 mirror
= self
.db
.get("SELECT * FROM mirrors WHERE id = '%s'", int(id))
184 mirror
= tornado
.database
.Row(
196 self
.render("admin-mirrors-create.html", mirror
=mirror
)
198 @tornado.web
.authenticated
199 def post(self
, id=None):
200 args
= tornado
.database
.Row()
201 for key
in ("id", "hostname", "owner", "location", "path", "releases",
202 "pakfire2", "pakfire3", "disabled"):
203 args
[key
] = self
.get_argument(key
, "")
206 if not self
.mirrors
.get(args
.id):
207 raise tornado
.web
.HTTPError(404)
209 #self.db.execute("""UPDATE mirrors SET
210 # hostname = %s, owner = %s, location = %s, path = %s, mirror = %s,
211 # pakfire2 = %s, pakfire3 = %s, disabled = %s
212 # WHERE id = %s""", args.hostname, args.owner, args.location,
213 # args.path, args.mirror, args.pakfire2, args.pakfire3, args.disabled,
215 self
.db
.update("mirrors", args
.id, **args
)
218 #self.db.execute("""INSERT INTO
219 # mirrors(hostname, owner, location, path, mirror, pakfire2, pakfire3, disabled)
220 # VALUES(%s, %s, %s, %s, %s, %s, %s, %s)""", args.hostname, args.owner,
221 # args.location, args.path, args.mirror, args.pakfire2, args.pakfire3, args.disabled)
222 self
.db
.insert("mirrors", **args
)
224 # Update database information
225 self
.mirrors
.check_all()
227 self
.redirect("/mirrors")
230 class AdminMirrorsEditHandler(AdminMirrorsCreateHandler
):
234 class AdminMirrorsDeleteHandler(AdminMirrorsBaseHandler
):
235 @tornado.web
.authenticated
237 self
.db
.execute("DELETE FROM mirrors WHERE id=%s", id)
238 self
.db
.execute("DELETE FROM mirror_files WHERE mirror=%s", id)
239 self
.redirect("/mirrors")
242 class AdminMirrorsDetailsHandler(AdminMirrorsBaseHandler
):
243 @tornado.web
.authenticated
245 mirror
= self
.mirrors
.get(id)
247 raise tornado
.web
.HTTPError(404)
249 self
.render("admin-mirrors-details.html", mirror
=mirror
)
252 class AdminNewsBaseHandler(AdminBaseHandler
):
255 return self
.backend
.news
258 class AdminNewsHandler(AdminNewsBaseHandler
):
259 @tornado.web
.authenticated
261 news
= self
.news
.list()
263 self
.render("admin-news.html", news
=news
)
266 class AdminNewsCreateHandler(AdminNewsBaseHandler
):
267 @tornado.web
.authenticated
268 def get(self
, id=None):
272 self
.render("admin-news-create.html", news
=news
)
275 class AdminNewsEditHandler(AdminNewsCreateHandler
):
279 class AdminDownloadsHandler(AdminBaseHandler
):
280 @tornado.web
.authenticated
282 self
.render("admin-downloads.html",
283 downloads_total
= self
.downloads
.total
,
284 downloads_today
= self
.downloads
.today
,
285 downloads_yesterday
= self
.downloads
.yesterday
,
286 downloads_locations_today
= self
.downloads
.get_countries("today"),
287 downloads_locations_total
= self
.downloads
.get_countries(),
291 class AdminDownloadsMirrorsHandler(AdminBaseHandler
):
292 @tornado.web
.authenticated
294 self
.render("admin-downloads-mirrors.html",
295 mirror_load_total
= self
.downloads
.get_mirror_load(),
296 mirror_load_today
= self
.downloads
.get_mirror_load("today"),