]>
git.ipfire.org Git - ipfire.org.git/blob - src/web/handlers_planet.py
5 from handlers_base
import *
7 class PlanetBaseHandler(BaseHandler
):
8 def group_entries_by_month(self
, entries
):
12 key
= (entry
.published
.year
, entry
.published
.month
)
15 months
[key
].append(entry
)
19 months
= months
.items()
20 months
.sort(reverse
=True)
25 class PlanetMainHandler(PlanetBaseHandler
):
29 offset
= int(self
.get_argument("offset", 0))
30 limit
= int(self
.get_argument("limit", 4))
32 entries
= self
.planet
.get_entries(offset
=offset
, limit
=limit
)
34 self
.render("planet/index.html", entries
=entries
, offset
=offset
+ limit
, limit
=limit
)
37 class PlanetHotEntriesHandler(PlanetBaseHandler
):
39 days
= self
.get_argument("days", None)
42 except (TypeError, ValueError):
45 entries
= self
.planet
.get_hot_entries(days
, limit
=25)
47 self
.render("planet/hottest.html", entries
=entries
)
50 class PlanetUserHandler(PlanetBaseHandler
):
51 def get(self
, author
):
52 author
= self
.accounts
.get_by_uid(author
)
54 raise tornado
.web
.HTTPError(404, "User is unknown")
56 entries
= self
.planet
.get_entries_by_author(author
.uid
)
57 entries
= self
.group_entries_by_month(entries
)
59 self
.render("planet/list.html", author
=author
, year
=None,
60 entries
=entries
, rss_url
="/user/%s/rss" % author
.uid
)
63 class PlanetPostingHandler(PlanetBaseHandler
):
65 entry
= self
.planet
.get_entry_by_slug(slug
)
67 raise tornado
.web
.HTTPError(404)
69 # Get the referer and location for statistical purposes
70 referer
= self
.request
.headers
.get("Referer", None)
71 location
= self
.get_remote_location()
73 location
= location
.country
76 with self
.db
.transaction():
77 entry
.count_view(referer
=referer
, location
=location
)
79 self
.render("planet/posting.html",
80 author
=entry
.author
, entry
=entry
)
83 class PlanetSearchHandler(PlanetBaseHandler
):
85 query
= self
.get_argument("q", "")
88 entries
= self
.planet
.search(query
)
92 self
.render("planet/search.html", entries
=entries
, query
=query
)
95 class PlanetYearHandler(PlanetBaseHandler
):
97 entries
= self
.planet
.get_entries_by_year(year
)
98 entries
= self
.group_entries_by_month(entries
)
100 self
.render("planet/list.html", author
=None, year
=year
,