6 from handlers_base
import *
10 class AdminBaseHandler(BaseHandler
):
11 def get_current_user(self
):
12 return self
.get_secure_cookie("account")
15 class AdminLoginHandler(AdminBaseHandler
):
17 self
.render("admin-login.html")
20 account
= self
.accounts
.search(self
.get_argument("name"))
22 raise tornado
.web
.HTTPError(403)
24 if account
.check_password(self
.get_argument("password")):
25 self
.set_secure_cookie("account", account
.uid
)
27 raise tornado
.web
.HTTPError(403)
32 class AdminLogoutHandler(AdminBaseHandler
):
34 self
.clear_cookie("account")
38 class AdminIndexHandler(AdminBaseHandler
):
39 @tornado.web
.authenticated
41 self
.render("admin-index.html")
44 class AdminApiPlanetRenderMarkupHandler(AdminBaseHandler
):
45 @tornado.web
.authenticated
47 text
= self
.get_argument("text", "")
51 "html" : self
.planet
.render(text
),
56 class AdminPlanetHandler(AdminBaseHandler
):
57 @tornado.web
.authenticated
59 entries
= self
.planet
.get_entries(status
=None, limit
=100)
61 self
.render("admin-planet.html", entries
=entries
)
64 class AdminPlanetComposeHandler(AdminBaseHandler
):
65 @tornado.web
.authenticated
66 def get(self
, slug
=None):
70 entry
= self
.planet
.get_entry_by_slug(slug
)
72 raise tornado
.web
.HTTPError(404)
74 self
.render("admin-planet-compose.html", entry
=entry
)
76 @tornado.web
.authenticated
78 title
= self
.get_argument("title")
79 markdown
= self
.get_argument("markdown")
80 tags
= self
.get_argument("tags", "")
82 status
= self
.get_argument("status", "draft")
83 assert status
in ("draft", "published")
85 author
= self
.accounts
.find(self
.current_user
)
87 entry
= self
.planet
.create(title
=title
, markdown
=markdown
,
88 author
=author
, status
=status
, tags
=tags
.split())
90 self
.redirect("/planet")
93 class AdminPlanetEditHandler(AdminPlanetComposeHandler
):
94 @tornado.web
.authenticated
96 entry
= self
.planet
.get_entry_by_slug(slug
)
98 raise tornado
.web
.HTTPError(404)
100 entry
.title
= self
.get_argument("title")
101 entry
.markdown
= self
.get_argument("markdown")
102 entry
.tags
= self
.get_argument("tags", "").split()
104 entry
.status
= self
.get_argument("status", "draft")
106 self
.redirect("/planet")
109 class AdminPlanetPublishHandler(AdminBaseHandler
):
110 @tornado.web
.authenticated
112 entry
= self
.planet
.get_entry_by_slug(slug
)
114 raise tornado
.web
.HTTPError(404)
116 entry
.status
= "published"
117 entry
.published
= datetime
.datetime
.utcnow()
119 self
.redirect("/planet")
122 class AdminAccountsBaseHandler(AdminBaseHandler
):
126 class AdminAccountsHandler(AdminAccountsBaseHandler
):
127 @tornado.web
.authenticated
129 accounts
= self
.accounts
.list()
130 self
.render("admin-accounts.html", accounts
=accounts
)
133 class AdminAccountsEditHandler(AdminAccountsBaseHandler
):
134 @tornado.web
.authenticated
136 account
= self
.accounts
.search(id)
138 raise tornado
.web
.HTTPError(404)
140 self
.render("admin-accounts-edit.html", account
=account
)
143 class AdminAccountsDeleteHandler(AdminAccountsBaseHandler
):
144 @tornado.web
.authenticated
146 account
= self
.accounts
.search(id)
148 raise tornado
.web
.HTTPError(404)
150 self
.accounts
.delete(id)
151 self
.redirect("/accounts")
154 class AdminMirrorsBaseHandler(AdminBaseHandler
):
158 class AdminMirrorsHandler(AdminMirrorsBaseHandler
):
159 @tornado.web
.authenticated
161 mirrors
= self
.mirrors
.get_all()
163 self
.render("admin-mirrors.html", mirrors
=mirrors
)
166 class AdminMirrorsUpdateHandler(AdminMirrorsBaseHandler
):
167 @tornado.web
.authenticated
169 self
.mirrors
.check_all()
170 self
.redirect("/mirrors")
173 class AdminMirrorsCreateHandler(AdminMirrorsBaseHandler
):
174 @tornado.web
.authenticated
175 def get(self
, id=None):
177 mirror
= self
.db
.get("SELECT * FROM mirrors WHERE id = %s", id)
179 mirror
= tornado
.database
.Row(
191 self
.render("admin-mirrors-create.html", mirror
=mirror
)
193 @tornado.web
.authenticated
194 def post(self
, id=None):
195 args
= tornado
.database
.Row()
196 for key
in ("id", "hostname", "owner", "location", "path", "releases",
197 "pakfire2", "pakfire3", "disabled"):
198 args
[key
] = self
.get_argument(key
, "")
201 if not self
.mirrors
.get(args
.id):
202 raise tornado
.web
.HTTPError(404)
204 #self.db.execute("""UPDATE mirrors SET
205 # hostname = %s, owner = %s, location = %s, path = %s, mirror = %s,
206 # pakfire2 = %s, pakfire3 = %s, disabled = %s
207 # WHERE id = %s""", args.hostname, args.owner, args.location,
208 # args.path, args.mirror, args.pakfire2, args.pakfire3, args.disabled,
210 self
.db
.update("mirrors", args
.id, **args
)
213 #self.db.execute("""INSERT INTO
214 # mirrors(hostname, owner, location, path, mirror, pakfire2, pakfire3, disabled)
215 # VALUES(%s, %s, %s, %s, %s, %s, %s, %s)""", args.hostname, args.owner,
216 # args.location, args.path, args.mirror, args.pakfire2, args.pakfire3, args.disabled)
217 self
.db
.insert("mirrors", **args
)
219 # Update database information
220 self
.mirrors
.check_all()
222 self
.redirect("/mirrors")
225 class AdminMirrorsEditHandler(AdminMirrorsCreateHandler
):
229 class AdminMirrorsDeleteHandler(AdminMirrorsBaseHandler
):
230 @tornado.web
.authenticated
232 self
.db
.execute("DELETE FROM mirrors WHERE id=%s", id)
233 self
.db
.execute("DELETE FROM mirror_files WHERE mirror=%s", id)
234 self
.redirect("/mirrors")
237 class AdminMirrorsDetailsHandler(AdminMirrorsBaseHandler
):
238 @tornado.web
.authenticated
240 mirror
= self
.mirrors
.get(id)
242 raise tornado
.web
.HTTPError(404)
244 self
.render("admin-mirrors-details.html", mirror
=mirror
)
247 class AdminNewsBaseHandler(AdminBaseHandler
):
250 return self
.backend
.news
253 class AdminNewsHandler(AdminNewsBaseHandler
):
254 @tornado.web
.authenticated
256 news
= self
.news
.get_all()
258 self
.render("admin-news.html", news
=news
)
261 class AdminNewsCreateHandler(AdminNewsBaseHandler
):
262 @tornado.web
.authenticated
263 def get(self
, id=None):
267 self
.render("admin-news-create.html", news
=news
)
270 class AdminNewsEditHandler(AdminNewsCreateHandler
):
274 class AdminDownloadsHandler(AdminBaseHandler
):
275 @tornado.web
.authenticated
277 self
.render("admin-downloads.html",
278 downloads_total
= self
.downloads
.total
,
279 downloads_today
= self
.downloads
.today
,
280 downloads_yesterday
= self
.downloads
.yesterday
,
281 downloads_locations_today
= self
.downloads
.get_countries("today"),
282 downloads_locations_total
= self
.downloads
.get_countries(),
286 class AdminDownloadsMirrorsHandler(AdminBaseHandler
):
287 @tornado.web
.authenticated
289 self
.render("admin-downloads-mirrors.html",
290 mirror_load_total
= self
.downloads
.get_mirror_load(),
291 mirror_load_today
= self
.downloads
.get_mirror_load("today"),