1. Daniel LaMotte
  2. RhodeCode

Commits

Marcin Kuzminski  committed 8bdec09

bumped version to 0.7.1 added atom and rss feeds. Moved https Fixud middleware before error middleware to proper generate debug page (static imports)

  • Participants
  • Parent commits 7a6a69f
  • Branches default
  • Tags v0.7.1

Comments (0)

Files changed (3)

File pylons_app/__init__.py

View file
 Hg app, a web based mercurial repository managment based on pylons
 """
 
-VERSION = (0, 7, 0, 'beta')
+VERSION = (0, 7, 1, 'beta')
 
 __version__ = '.'.join((str(each) for each in VERSION[:4]))
 

File pylons_app/config/middleware.py

View file
     
     # CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares)
     #set the https based on HTTP_X_URL_SCHEME
-    app = HttpsFixup(app)
+    
     app = SimpleHg(app, config)
     
     if asbool(full_stack):
         else:
             app = StatusCodeRedirect(app, [400, 401, 403, 404, 500])
     
+    app = HttpsFixup(app)
     # Establish the Registry for this application
     app = RegistryManager(app)
 

File pylons_app/controllers/feed.py

View file
 # -*- coding: utf-8 -*-
 import logging
 from operator import itemgetter
-from pylons import tmpl_context as c, request, config
-from pylons_app.lib.base import BaseController, render
+from pylons import tmpl_context as c, request, config, url, response
+from pylons_app.lib.base import BaseController, render, _full_changelog_cached
 from pylons_app.lib.utils import get_repo_slug
 from pylons_app.model.hg_model import HgModel
 from pylons_app.lib.auth import LoginRequired
+from webhelpers.feedgenerator import Atom1Feed, Rss201rev2Feed
 log = logging.getLogger(__name__)
 
 class FeedController(BaseController):
     #secure it or not ?
     def __before__(self):
         super(FeedController, self).__before__()
+        #common values for feeds
+        self.description = 'Changes on %s repository'
+        self.title = "%s feed"
+        self.language = 'en-us'
+        self.ttl = "5"
+        self.feed_nr = 10
+
+    def atom(self, repo_name):
+        """Produce an atom-1.0 feed via feedgenerator module"""
+        feed = Atom1Feed(title=self.title % repo_name,
+                         link=url('summary_home', repo_name=repo_name, qualified=True),
+                         description=self.description % repo_name,
+                         language=self.language,
+                         ttl=self.ttl)
         
-    def atom(self):
-        return 'Hello Atom'
+        
+        for cnt, cs in enumerate(_full_changelog_cached(repo_name)):
+            if cnt > self.feed_nr:
+                break
+            feed.add_item(title=cs.message,
+                          link=url('changeset_home', repo_name=repo_name, revision=cs.raw_id, qualified=True),
+                          description=str(cs.date))
+        
+        response.content_type = feed.mime_type
+        return feed.writeString('utf-8')
+
     
-    def rss(self):
-        return 'Hello rss'
+    def rss(self, repo_name):
+        """Produce an rss2 feed via feedgenerator module"""
+        feed = Rss201rev2Feed(title=self.title % repo_name,
+                         link=url('summary_home', repo_name=repo_name, qualified=True),
+                         description=self.description % repo_name,
+                         language=self.language,
+                         ttl=self.ttl)
+        
+        for cnt, cs in enumerate(_full_changelog_cached(repo_name)):
+            if cnt > self.feed_nr:
+                break
+            feed.add_item(title=cs.message,
+                          link=url('changeset_home', repo_name=repo_name, revision=cs.raw_id, qualified=True),
+                          description=str(cs.date))
+            
+        response.content_type = feed.mime_type
+        return feed.writeString('utf-8')