]> git.ipfire.org Git - people/shoehn/ipfire.org.git/commitdiff
Readded RSS functionality.
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 8 Mar 2010 20:15:23 +0000 (21:15 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 8 Mar 2010 20:15:23 +0000 (21:15 +0100)
www/templates/rss.xml [new file with mode: 0644]
www/webapp/__init__.py
www/webapp/handlers.py
www/webapp/news.py

diff --git a/www/templates/rss.xml b/www/templates/rss.xml
new file mode 100644 (file)
index 0000000..ebb0e3e
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rss version="2.0">
+       <channel>
+               <title>IPFire.org - News</title>
+               <link>http://www.ipfire.org/</link>
+               <description>IPFire News Feed</description>
+               <language>{{ lang }}</language>
+               <copyright>IPFire-Team</copyright>
+               <pubDate>Thu, 8 Nov 2007 00:00:00 +0200</pubDate>
+               {% for item in items %}
+                       <item>
+                               <title>{{ item.subject }}</title>
+                               <link>http://www.ipfire.org/{{ lang }}/news</link>
+                               <author>{{ item.mail }} ({{ item.author }})</author>
+                               <guid>http://www.ipfire.org/{{ lang }}/news#{{ item.id }}</guid>
+                               <pubDate>{{ item.date }}</pubDate>
+                               <description>
+                                       <![CDATA[
+                                               {{ item.content }}
+                                       ]]>
+                               </description>
+                       </item>
+               {% end %}
+       </channel>
+</rss>
index e8f34ee83791bb0db002dbbd469ab5a09d8a4ad9..b3d38d076023761d24573008471f75c8e6ab4144 100644 (file)
@@ -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
index 58f1a0fbaa07dd8bec10ac4ae8eaeacc387febfc..b2704a43a56637ac47703812c8c27d811a60aa15 100644 (file)
@@ -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)
index 9d170db6835a7b29d06e80f2e4aa75442ca81f28..652578088ae9b93a9fabcdf909e850354f73c92b 100644 (file)
@@ -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):