X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=src%2Fweb%2Fblog.py;h=a6b7224bbd5b6b6dc1edfefb3c141e436e870187;hb=541c952b1521f29c041882020928d09ec38962df;hp=f4a8fd94775ebcbb8d73f0e2ac79db8f58272020;hpb=d2db56162f68514959a61e01b35dae789a0eb420;p=ipfire.org.git diff --git a/src/web/blog.py b/src/web/blog.py index f4a8fd94..a6b7224b 100644 --- a/src/web/blog.py +++ b/src/web/blog.py @@ -89,6 +89,65 @@ class YearHandler(base.BaseHandler): self.render("blog/year.html", posts=posts, year=year) +class ComposeHandler(base.BaseHandler): + @tornado.web.authenticated + def get(self): + self.render("blog/compose.html", post=None) + + @tornado.web.authenticated + def post(self): + title = self.get_argument("title") + text = self.get_argument("text") + tags = self.get_argument("tags", None) + + with self.db.transaction(): + post = self.backend.blog.create_post(title, text, + author=self.current_user, tags=tags) + + self.redirect("/posts") + + +class EditHandler(base.BaseHandler): + @tornado.web.authenticated + def get(self, slug): + post = self.backend.blog.get_by_slug(slug) + if not post: + raise tornado.web.HTTPError(404) + + # XXX check if post is editable + + self.render("blog/compose.html", post=post) + + @tornado.web.authenticated + def post(self, slug): + post = self.backend.blog.get_by_slug(slug) + if not post: + raise tornado.web.HTTPError(404) + + # XXX check if post is editable + + with self.db.transaction(): + # Update title + post.title = self.get_argument("title") + + # Update text + post.text = self.get_argument("text") + + # Update tags + post.tags = (t.strip() for t in self.get_argument("tags", "").split(",")) + + # Mark post as updated + post.updated() + + # Return to blog if the post is already published + if post.is_published(): + self.redirect("/post/%s" % post.slug) + return + + # Otherwise return to list of unpublished posts + self.redirect("/posts") + + class HistoryNavigationModule(ui_modules.UIModule): def render(self): return self.render_string("blog/modules/history-navigation.html",