]> git.ipfire.org Git - ipfire.org.git/blame - src/web/blog.py
blog: Add search
[ipfire.org.git] / src / web / blog.py
CommitLineData
12e5de7e
MT
1#!/usr/bin/python
2
3import tornado.web
4
5import handlers_base as base
6
f91dfcc7
MT
7from . import ui_modules
8
8a897d25
MT
9class IndexHandler(base.BaseHandler):
10 def get(self):
11 posts = self.planet.get_entries(limit=3)
12
13 self.render("blog/index.html", posts=posts)
14
15
cfc0823a
MT
16class AuthorHandler(base.BaseHandler):
17 def get(self, uid):
18 author = self.accounts.get_by_uid(uid)
19 if not author:
20 raise tornado.web.HTTPError(404, "User is unknown")
21
22 # Get all posts from this author
23 posts = self.planet.get_entries_by_author(author.uid)
24 if not posts:
25 raise tornado.web.HTTPError(404, "User has no posts")
26
27 self.render("blog/author.html", author=author, posts=posts)
28
29
12e5de7e
MT
30class PostHandler(base.BaseHandler):
31 def get(self, slug):
32 entry = self.planet.get_entry_by_slug(slug)
33 if not entry:
34 raise tornado.web.HTTPError(404)
35
36 self.render("blog/post.html", post=entry)
f91dfcc7
MT
37
38
e6b18dce
MT
39class SearchHandler(base.BaseHandler):
40 def get(self):
41 q = self.get_argument("q")
42
43 posts = self.planet.search(q)
44 if not posts:
45 raise tornado.web.HTTPError(404, "Nothing found")
46
47 self.render("blog/search-results.html", q=q, posts=posts)
48
49
f91dfcc7
MT
50class PostModule(ui_modules.UIModule):
51 def render(self, post):
52 return self.render_string("blog/modules/post.html", post=post)
8a897d25
MT
53
54
55class PostsModule(ui_modules.UIModule):
56 def render(self, posts):
57 return self.render_string("blog/modules/posts.html", posts=posts)