From: Michael Tremer Date: Mon, 8 Mar 2010 20:15:23 +0000 (+0100) Subject: Readded RSS functionality. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e48d9ae6a49b2076b74f14823646b0b47fbfe0d8;p=ipfire.org.git Readded RSS functionality. --- diff --git a/www/templates/rss.xml b/www/templates/rss.xml new file mode 100644 index 00000000..ebb0e3e4 --- /dev/null +++ b/www/templates/rss.xml @@ -0,0 +1,25 @@ + + + + IPFire.org - News + http://www.ipfire.org/ + IPFire News Feed + {{ lang }} + IPFire-Team + Thu, 8 Nov 2007 00:00:00 +0200 + {% for item in items %} + + {{ item.subject }} + http://www.ipfire.org/{{ lang }}/news + {{ item.mail }} ({{ item.author }}) + http://www.ipfire.org/{{ lang }}/news#{{ item.id }} + {{ item.date }} + + + + + {% end %} + + diff --git a/www/webapp/__init__.py b/www/webapp/__init__.py index e8f34ee8..b3d38d07 100644 --- a/www/webapp/__init__.py +++ b/www/webapp/__init__.py @@ -65,6 +65,9 @@ class Application(tornado.web.Application): (r"/[A-Za-z]{2}/downloads?/development", DownloadDevelopmentHandler), (r"/[A-Za-z]{2}/downloads?/mirrors", DownloadMirrorHandler), (r"/[A-Za-z]{2}/downloads?/torrents", DownloadTorrentHandler), + # RSS feed + (r"/([A-Za-z]{2})/news.rss", RSSHandler), + (r"/data/feeds/main-([A-Za-z]{2}).rss", RSSHandler), # API (r"/api/cluster_info", ApiClusterInfoHandler), # Always the last rule diff --git a/www/webapp/handlers.py b/www/webapp/handlers.py index 58f1a0fb..b2704a43 100644 --- a/www/webapp/handlers.py +++ b/www/webapp/handlers.py @@ -16,7 +16,7 @@ import tornado.locale import tornado.web from banners import banners -from helpers import size +from helpers import size, Item from info import info from mirrors import mirrors from news import news @@ -294,3 +294,17 @@ class DownloadFileHandler(BaseHandler): def get_error_html(self, status_code, **kwargs): return tornado.web.RequestHandler.get_error_html(self, status_code, **kwargs) + + +class RSSHandler(BaseHandler): + def get(self, lang): + items = [] + for item in news.get(15): + item = Item(**item.args.copy()) + for attr in ("subject", "content"): + if type(item[attr]) == type({}): + item[attr] = item[attr][lang] + items.append(item) + + self.set_header("Content-Type", "application/rss+xml") + self.render("rss.xml", items=items, lang=lang) diff --git a/www/webapp/news.py b/www/webapp/news.py index 9d170db6..65257808 100644 --- a/www/webapp/news.py +++ b/www/webapp/news.py @@ -18,6 +18,7 @@ class News(object): json = json_loads(data) for key in sorted(json.keys()): + json[key]["id"] = key self.items.append(NewsItem(**_stringify(json[key]))) def get(self, limit=None):