]> git.ipfire.org Git - people/shoehn/ipfire.org.git/blame - webapp/handlers_planet.py
icons styling in seperat file
[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):
60b0917c
MT
8 def group_entries_by_month(self, entries):
9 months = {}
10
11 for entry in entries:
12 key = (entry.published.year, entry.published.month)
13
14 try:
15 months[key].append(entry)
16 except KeyError:
17 months[key] = [entry]
18
19 months = months.items()
20 months.sort(reverse=True)
21
22 return months
940227cb
MT
23
24
25class PlanetMainHandler(PlanetBaseHandler):
bcc3ed4d
MT
26 rss_url = "/rss"
27
940227cb
MT
28 def get(self):
29 offset = int(self.get_argument("offset", 0))
30 limit = int(self.get_argument("limit", 4))
31
32 entries = self.planet.get_entries(offset=offset, limit=limit)
33
fa7e1a0a 34 self.render("planet/index.html", entries=entries, offset=offset + limit, limit=limit)
940227cb
MT
35
36
d88b8f41
MT
37class PlanetHotEntriesHandler(PlanetBaseHandler):
38 def get(self):
39 days = self.get_argument("days", None)
40 try:
41 days = int(days)
42 except (TypeError, ValueError):
43 days = 30
44
45 entries = self.planet.get_hot_entries(days, limit=25)
46
47 self.render("planet/hottest.html", entries=entries)
48
49
940227cb
MT
50class PlanetUserHandler(PlanetBaseHandler):
51 def get(self, author):
66862195 52 author = self.accounts.get_by_uid(author)
940227cb
MT
53 if not author:
54 raise tornado.web.HTTPError(404, "User is unknown")
55
60b0917c
MT
56 entries = self.planet.get_entries_by_author(author.uid)
57 entries = self.group_entries_by_month(entries)
940227cb 58
60b0917c
MT
59 self.render("planet/list.html", author=author, year=None,
60 entries=entries, rss_url="/user/%s/rss" % author.uid)
940227cb
MT
61
62
63class PlanetPostingHandler(PlanetBaseHandler):
64 def get(self, slug):
d88b8f41 65 self.entry = self.planet.get_entry_by_slug(slug)
940227cb 66
d88b8f41 67 if not self.entry:
940227cb
MT
68 raise tornado.web.HTTPError(404)
69
55b162d6 70 self.render("planet/posting.html",
d88b8f41
MT
71 author=self.entry.author, entry=self.entry)
72
73 def on_finish(self):
74 assert self.entry
75
76 # Get the referer and location for statistical purposes
77 referer = self.request.headers.get("Referer", None)
78 location = self.get_remote_location()
79 if location:
80 location = location.country
81
82 self.entry.count_view(referer=referer, location=location)
2bdd073f
MT
83
84
85class PlanetSearchHandler(PlanetBaseHandler):
86 def get(self):
87 query = self.get_argument("q", "")
88
89 if query:
90 entries = self.planet.search(query)
91 else:
92 entries = []
93
94 self.render("planet/search.html", entries=entries, query=query)
cc3b928d
MT
95
96
97class PlanetYearHandler(PlanetBaseHandler):
98 def get(self, year):
99 entries = self.planet.get_entries_by_year(year)
60b0917c 100 entries = self.group_entries_by_month(entries)
cc3b928d 101
60b0917c
MT
102 self.render("planet/list.html", author=None, year=year,
103 entries=entries)