]>
git.ipfire.org Git - ipfire.org.git/blob - webapp/handlers_rss.py
4 import tornado
.database
8 from handlers_base
import *
10 class RSSHandler(BaseHandler
):
14 def cache_prefix(self
):
15 return self
._cache
_prefix
18 self
.set_header("Content-Type", "application/rss+xml")
21 offset
= int(self
.get_argument("offset", 0))
22 limit
= int(self
.get_argument("limit", 10))
24 rss_id
= "rss-%s-locale=%s-limit=%s-offset=%s" % \
25 (self
.cache_prefix
, self
.locale
.code
, limit
, offset
)
27 items
= self
.memcached
.get(rss_id
)
29 items
= self
.generate()
31 self
.memcached
.set(rss_id
, items
, 15)
33 self
.render("rss.xml", items
=items
, title
=self
.title
,
34 url
=self
.url
, description
=self
.description
)
37 raise NotImplementedError
40 class RSSNewsHandler(RSSHandler
):
41 _cache_prefix
= "news"
43 title
= "IPFire.org - News"
44 url
= "http://www.ipfire.org/"
45 description
= "IPFire News Feed"
48 offset
= int(self
.get_argument("offset", 0))
49 limit
= int(self
.get_argument("limit", 10))
51 news
= self
.news
.get_latest(
59 # Get author information
60 author
= self
.get_account(n
.author_id
)
61 n
.author
= tornado
.database
.Row(
67 n
.text
= textile
.textile(n
.text
)
69 item
= tornado
.database
.Row({
73 "url" : "http://www.ipfire.org/news/%s" % n
.slug
,
81 class RSSPlanetAllHandler(RSSHandler
):
82 _cache_prefix
= "planet"
84 title
= "IPFire.org - Planet"
85 url
= "http://planet.ipfire.org/"
86 description
= "IPFire Planet Feed"
89 offset
= int(self
.get_argument("offset", 0))
90 limit
= int(self
.get_argument("limit", 10))
92 news
= self
.planet
.get_entries(
99 # Get author information
100 author
= tornado
.database
.Row(
102 mail
= n
.author
.email
,
105 item
= tornado
.database
.Row({
108 "date" : n
.published
,
109 "url" : "http://planet.ipfire.org/post/%s" % n
.slug
,
110 "text" : textile
.textile(n
.text
),
117 class RSSPlanetUserHandler(RSSPlanetAllHandler
):
119 def cache_prefix(self
):
120 return "%s-user=%s" % (self
._cache
_prefix
, self
.user
)
125 return RSSPlanetAllHandler
.get(self
)
128 offset
= int(self
.get_argument("offset", 0))
129 limit
= int(self
.get_argument("limit", 10))
131 news
= self
.planet
.get_entries_by_author(
139 # Get author information
140 author
= tornado
.database
.Row(
142 mail
= n
.author
.email
,
145 item
= tornado
.database
.Row({
148 "date" : n
.published
,
149 "url" : "http://planet.ipfire.org/post/%s" % n
.slug
,
150 "text" : textile
.textile(n
.text
),