3 # XXX most of this is broken
7 from handlers_base
import *
11 class AdminBaseHandler(BaseHandler
):
14 return backend
.Accounts()
18 return backend
.Planet()
20 def get_current_user(self
):
21 return self
.get_secure_cookie("account")
24 class AdminLoginHandler(AdminBaseHandler
):
26 self
.render("admin-login.html")
29 account
= self
.accounts
.search(self
.get_argument("name"))
31 raise tornado
.web
.HTTPError(403)
33 if account
.check_password(self
.get_argument("password")):
34 self
.set_secure_cookie("account", account
.uid
)
36 raise tornado
.web
.HTTPError(403)
41 class AdminLogoutHandler(AdminBaseHandler
):
43 self
.clear_cookie("account")
47 class AdminIndexHandler(AdminBaseHandler
):
48 @tornado.web
.authenticated
50 self
.render("admin-index.html")
53 class AdminApiPlanetRenderMarkupHandler(AdminBaseHandler
):
54 @tornado.web
.authenticated
56 text
= self
.get_argument("text", "")
59 self
.write(self
.planet
.render(text
))
63 class AdminPlanetHandler(AdminBaseHandler
):
64 @tornado.web
.authenticated
66 entries
= self
.planet
.get_entries(limit
=100)
68 self
.render("admin-planet.html", entries
=entries
)
71 class AdminPlanetComposeHandler(AdminBaseHandler
):
72 @tornado.web
.authenticated
73 def get(self
, id=None):
74 entry
= backend
.PlanetEntry()
77 entry
= self
.planet
.get_entry_by_id(id)
79 self
.render("admin-planet-compose.html", entry
=entry
)
81 @tornado.web
.authenticated
82 def post(self
, id=None):
83 id = self
.get_argument("id", id)
85 entry
= backend
.PlanetEntry()
88 entry
= self
.planet
.get_entry_by_id(id)
90 entry
.set("title", self
.get_argument("title"))
91 entry
.set("markdown", self
.get_argument("markdown"))
92 entry
.set("author_id", self
.current_user
)
95 self
.planet
.update_entry(entry
)
97 self
.planet
.save_entry(entry
)
99 self
.redirect("/planet")
102 class AdminPlanetEditHandler(AdminPlanetComposeHandler
):
106 class AdminAccountsBaseHandler(AdminBaseHandler
):
110 class AdminAccountsHandler(AdminAccountsBaseHandler
):
111 @tornado.web
.authenticated
113 accounts
= self
.accounts
.list()
114 self
.render("admin-accounts.html", accounts
=accounts
)
117 class AdminAccountsEditHandler(AdminAccountsBaseHandler
):
118 @tornado.web
.authenticated
120 account
= self
.accounts
.search(id)
122 raise tornado
.web
.HTTPError(404)
124 self
.render("admin-accounts-edit.html", account
=account
)
127 class AdminAccountsDeleteHandler(AdminAccountsBaseHandler
):
128 @tornado.web
.authenticated
130 account
= self
.accounts
.search(id)
132 raise tornado
.web
.HTTPError(404)
134 self
.accounts
.delete(id)
135 self
.redirect("/accounts")
138 class AdminMirrorsBaseHandler(AdminBaseHandler
):
141 return backend
.Mirrors()
144 class AdminMirrorsHandler(AdminMirrorsBaseHandler
):
145 @tornado.web
.authenticated
147 mirrors
= self
.mirrors
.list()
149 self
.render("admin-mirrors.html", mirrors
=mirrors
)
152 class AdminMirrorsUpdateHandler(AdminMirrorsBaseHandler
):
153 @tornado.web
.authenticated
155 self
.mirrors
.check_all()
156 self
.redirect("/mirrors")
159 class AdminMirrorsCreateHandler(AdminMirrorsBaseHandler
):
160 @tornado.web
.authenticated
161 def get(self
, id=None):
163 mirror
= self
.db
.get("SELECT * FROM mirrors WHERE id = '%s'", int(id))
165 mirror
= tornado
.database
.Row(
177 self
.render("admin-mirrors-create.html", mirror
=mirror
)
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
, "")
187 if not self
.mirrors
.get(args
.id):
188 raise tornado
.web
.HTTPError(404)
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,
196 self
.db
.update("mirrors", args
.id, **args
)
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
)
205 # Update database information
206 self
.mirrors
.check_all()
208 self
.redirect("/mirrors")
211 class AdminMirrorsEditHandler(AdminMirrorsCreateHandler
):
215 class AdminMirrorsDeleteHandler(AdminMirrorsBaseHandler
):
216 @tornado.web
.authenticated
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")
223 class AdminMirrorsDetailsHandler(AdminMirrorsBaseHandler
):
224 @tornado.web
.authenticated
226 mirror
= self
.mirrors
.get(id)
228 raise tornado
.web
.HTTPError(404)
230 self
.render("admin-mirrors-details.html", mirror
=mirror
)
233 class AdminNewsBaseHandler(AdminBaseHandler
):
236 return self
.backend
.news
239 class AdminNewsHandler(AdminNewsBaseHandler
):
240 @tornado.web
.authenticated
242 news
= self
.news
.list()
244 self
.render("admin-news.html", news
=news
)
247 class AdminNewsCreateHandler(AdminNewsBaseHandler
):
248 @tornado.web
.authenticated
249 def get(self
, id=None):
253 self
.render("admin-news-create.html", news
=news
)
256 class AdminNewsEditHandler(AdminNewsCreateHandler
):