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")
87 assert status
in ("draft", "published")
89 author
= self
.accounts
.find(self
.current_user
)
91 entry
= self
.planet
.create(title
=title
, markdown
=markdown
,
92 author
=author
, status
=status
, tags
=tags
.split())
94 self
.redirect("/planet")
97 class AdminPlanetEditHandler(AdminPlanetComposeHandler
):
98 @tornado.web
.authenticated
100 entry
= self
.planet
.get_entry_by_slug(slug
)
102 raise tornado
.web
.HTTPError(404)
104 entry
.title
= self
.get_argument("title")
105 entry
.markdown
= self
.get_argument("markdown")
106 entry
.tags
= self
.get_argument("tags", "").split()
108 entry
.status
= self
.get_argument("status", "draft")
110 self
.redirect("/planet")
113 class AdminPlanetPublishHandler(AdminBaseHandler
):
114 @tornado.web
.authenticated
116 entry
= self
.planet
.get_entry_by_slug(slug
)
118 raise tornado
.web
.HTTPError(404)
120 entry
.status
= "published"
121 entry
.published
= datetime
.datetime
.utcnow()
123 self
.redirect("/planet")
126 class AdminAccountsBaseHandler(AdminBaseHandler
):
130 class AdminAccountsHandler(AdminAccountsBaseHandler
):
131 @tornado.web
.authenticated
133 accounts
= self
.accounts
.list()
134 self
.render("admin-accounts.html", accounts
=accounts
)
137 class AdminAccountsEditHandler(AdminAccountsBaseHandler
):
138 @tornado.web
.authenticated
140 account
= self
.accounts
.search(id)
142 raise tornado
.web
.HTTPError(404)
144 self
.render("admin-accounts-edit.html", account
=account
)
147 class AdminAccountsDeleteHandler(AdminAccountsBaseHandler
):
148 @tornado.web
.authenticated
150 account
= self
.accounts
.search(id)
152 raise tornado
.web
.HTTPError(404)
154 self
.accounts
.delete(id)
155 self
.redirect("/accounts")
158 class AdminMirrorsBaseHandler(AdminBaseHandler
):
161 return backend
.Mirrors()
164 class AdminMirrorsHandler(AdminMirrorsBaseHandler
):
165 @tornado.web
.authenticated
167 mirrors
= self
.mirrors
.list()
169 self
.render("admin-mirrors.html", mirrors
=mirrors
)
172 class AdminMirrorsUpdateHandler(AdminMirrorsBaseHandler
):
173 @tornado.web
.authenticated
175 self
.mirrors
.check_all()
176 self
.redirect("/mirrors")
179 class AdminMirrorsCreateHandler(AdminMirrorsBaseHandler
):
180 @tornado.web
.authenticated
181 def get(self
, id=None):
183 mirror
= self
.db
.get("SELECT * FROM mirrors WHERE id = '%s'", int(id))
185 mirror
= tornado
.database
.Row(
197 self
.render("admin-mirrors-create.html", mirror
=mirror
)
199 @tornado.web
.authenticated
200 def post(self
, id=None):
201 args
= tornado
.database
.Row()
202 for key
in ("id", "hostname", "owner", "location", "path", "releases",
203 "pakfire2", "pakfire3", "disabled"):
204 args
[key
] = self
.get_argument(key
, "")
207 if not self
.mirrors
.get(args
.id):
208 raise tornado
.web
.HTTPError(404)
210 #self.db.execute("""UPDATE mirrors SET
211 # hostname = %s, owner = %s, location = %s, path = %s, mirror = %s,
212 # pakfire2 = %s, pakfire3 = %s, disabled = %s
213 # WHERE id = %s""", args.hostname, args.owner, args.location,
214 # args.path, args.mirror, args.pakfire2, args.pakfire3, args.disabled,
216 self
.db
.update("mirrors", args
.id, **args
)
219 #self.db.execute("""INSERT INTO
220 # mirrors(hostname, owner, location, path, mirror, pakfire2, pakfire3, disabled)
221 # VALUES(%s, %s, %s, %s, %s, %s, %s, %s)""", args.hostname, args.owner,
222 # args.location, args.path, args.mirror, args.pakfire2, args.pakfire3, args.disabled)
223 self
.db
.insert("mirrors", **args
)
225 # Update database information
226 self
.mirrors
.check_all()
228 self
.redirect("/mirrors")
231 class AdminMirrorsEditHandler(AdminMirrorsCreateHandler
):
235 class AdminMirrorsDeleteHandler(AdminMirrorsBaseHandler
):
236 @tornado.web
.authenticated
238 self
.db
.execute("DELETE FROM mirrors WHERE id=%s", id)
239 self
.db
.execute("DELETE FROM mirror_files WHERE mirror=%s", id)
240 self
.redirect("/mirrors")
243 class AdminMirrorsDetailsHandler(AdminMirrorsBaseHandler
):
244 @tornado.web
.authenticated
246 mirror
= self
.mirrors
.get(id)
248 raise tornado
.web
.HTTPError(404)
250 self
.render("admin-mirrors-details.html", mirror
=mirror
)
253 class AdminNewsBaseHandler(AdminBaseHandler
):
256 return self
.backend
.news
259 class AdminNewsHandler(AdminNewsBaseHandler
):
260 @tornado.web
.authenticated
262 news
= self
.news
.list()
264 self
.render("admin-news.html", news
=news
)
267 class AdminNewsCreateHandler(AdminNewsBaseHandler
):
268 @tornado.web
.authenticated
269 def get(self
, id=None):
273 self
.render("admin-news-create.html", news
=news
)
276 class AdminNewsEditHandler(AdminNewsCreateHandler
):
280 class AdminDownloadsHandler(AdminBaseHandler
):
281 @tornado.web
.authenticated
283 self
.render("admin-downloads.html",
284 downloads_total
= self
.downloads
.total
,
285 downloads_today
= self
.downloads
.today
,
286 downloads_yesterday
= self
.downloads
.yesterday
,
287 downloads_locations_today
= self
.downloads
.get_countries("today"),
288 downloads_locations_total
= self
.downloads
.get_countries(),
292 class AdminDownloadsMirrorsHandler(AdminBaseHandler
):
293 @tornado.web
.authenticated
295 self
.render("admin-downloads-mirrors.html",
296 mirror_load_total
= self
.downloads
.get_mirror_load(),
297 mirror_load_today
= self
.downloads
.get_mirror_load("today"),