]> git.ipfire.org Git - people/shoehn/ipfire.org.git/blame - webapp/handlers_planet.py
planet: Add a view counter for the posts
[people/shoehn/ipfire.org.git] / webapp / handlers_planet.py
CommitLineData
940227cb
MT
1#!/usr/bin/python
2
3import tornado.web
4
5from handlers_base import *
6
940227cb 7class PlanetBaseHandler(BaseHandler):
a6dc0bad 8 pass
940227cb
MT
9
10
11class PlanetMainHandler(PlanetBaseHandler):
bcc3ed4d
MT
12 rss_url = "/rss"
13
940227cb
MT
14 def get(self):
15 offset = int(self.get_argument("offset", 0))
16 limit = int(self.get_argument("limit", 4))
17
18 entries = self.planet.get_entries(offset=offset, limit=limit)
19
fa7e1a0a 20 self.render("planet/index.html", entries=entries, offset=offset + limit, limit=limit)
940227cb
MT
21
22
23class PlanetUserHandler(PlanetBaseHandler):
24 def get(self, author):
66862195 25 author = self.accounts.get_by_uid(author)
940227cb
MT
26 if not author:
27 raise tornado.web.HTTPError(404, "User is unknown")
28
29 offset = int(self.get_argument("offset", 0))
30 limit = int(self.get_argument("limit", 4))
31
32 entries = self.planet.get_entries_by_author(author.uid,
33 offset=offset, limit=limit)
34
55b162d6 35 self.render("planet/user.html", author=author, entries=entries,
bcc3ed4d 36 offset=offset + limit, limit=limit, rss_url="/user/%s/rss" % author.uid)
940227cb
MT
37
38
39class PlanetPostingHandler(PlanetBaseHandler):
40 def get(self, slug):
41 entry = self.planet.get_entry_by_slug(slug)
42
43 if not entry:
44 raise tornado.web.HTTPError(404)
45
c0c55656
MT
46 # Update the view counter
47 entry.increase_view_counter()
48
55b162d6 49 self.render("planet/posting.html",
940227cb 50 author=entry.author, entry=entry)
2bdd073f
MT
51
52
53class PlanetSearchHandler(PlanetBaseHandler):
54 def get(self):
55 query = self.get_argument("q", "")
56
57 if query:
58 entries = self.planet.search(query)
59 else:
60 entries = []
61
62 self.render("planet/search.html", entries=entries, query=query)
cc3b928d
MT
63
64
65class PlanetYearHandler(PlanetBaseHandler):
66 def get(self, year):
67 entries = self.planet.get_entries_by_year(year)
68
69 months = {}
70 for entry in entries:
71 try:
72 months[entry.month].append(entry)
73 except KeyError:
74 months[entry.month] = [entry]
75
76 months = months.items()
77 months.sort(reverse=True)
78
79 self.render("planet/year.html", months=months, year=year)