+
+
+class AdminBaseHandler(BaseHandler):
+ def render(self, *args, **kwargs):
+
+ return BaseHandler.render(self, *args, **kwargs)
+
+
+class AdminIndexHandler(AdminBaseHandler):
+ def get(self):
+ self.render("admin-index.html")
+
+
+class AdminApiPlanetRenderMarkupHandler(AdminBaseHandler):
+ def get(self):
+ text = self.get_argument("text", "")
+
+ # Render markup
+ self.write(markdown.markdown(text))
+ self.finish()
+
+
+class AdminPlanetHandler(AdminBaseHandler):
+ def get(self):
+ entries = self.planet_db.query("SELECT * FROM entries ORDER BY published DESC")
+
+ for entry in entries:
+ entry.author = self.user_db.get_user_by_id(entry.author_id)
+
+ self.render("admin-planet.html", entries=entries)
+
+
+class AdminPlanetComposeHandler(AdminBaseHandler):
+ #@tornado.web.authenticated
+ def get(self, id=None):
+ if id:
+ entry = self.planet_db.get("SELECT * FROM entries WHERE id = '%s'", int(id))
+ else:
+ entry = tornado.database.Row(id="", title="", text="")
+
+ self.render("admin-planet-compose.html", entry=entry)
+
+ #@tornado.web.authenticated
+ def post(self, id=None):
+ id = self.get_argument("id", id)
+ title = self.get_argument("title")
+ text = self.get_argument("text")
+
+ if id:
+ entry = self.planet_db.get("SELECT * FROM entries WHERE id = %s", id)
+ if not entry:
+ raise tornado.web.HTTPError(404)
+
+ self.planet_db.execute("UPDATE entries SET title = %s, text = %s "
+ "WHERE id = %s", title, text, id)
+
+ slug = entry.slug
+
+ else:
+ slug = unicodedata.normalize("NFKD", title).encode("ascii", "ignore")
+ slug = re.sub(r"[^\w]+", " ", slug)
+ slug = "-".join(slug.lower().strip().split())
+
+ if not slug:
+ slug = "entry"
+
+ while True:
+ e = self.planet_db.get("SELECT * FROM entries WHERE slug = %s", slug)
+ if not e:
+ break
+ slug += "-"
+
+ self.planet_db.execute("INSERT INTO entries(author_id, title, slug, text, published) "
+ "VALUES(%s, %s, %s, %s, UTC_TIMESTAMP())", 500, title, slug, text)
+
+ self.redirect("/planet")
+
+
+class AdminPlanetEditHandler(AdminPlanetComposeHandler):
+ pass
+
+
+class AdminAccountsHandler(AdminBaseHandler):
+ def get(self):
+ users = self.user_db.users
+
+ self.render("admin-accounts.html", accounts=users)
+
+
+class AdminAccountsEditHandler(AdminBaseHandler):
+ def get(self, id):
+ user = self.user_db.get_user_by_id(id)
+
+ if not user:
+ raise tornado.web.HTTPError(404)
+
+ self.render("admin-accounts-edit.html", user=user)
+
+
+class AuthLoginHandler(BaseHandler):
+ def get(self):
+ self.render("admin-login.html")
+
+ def post(self):
+ #name = self.get_attribute("name")
+ #password = self.get_attribute("password")
+
+ pass
+
+ #if self.user_db.check_password(name, password):
+ # self.set_secure_cookie("user", int(user.id))
+
+
+class AuthLogoutHandler(BaseHandler):
+ def get(self):
+ self.clear_cookie("user")
+ self.redirect("/")