aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcin Kuzminski <marcin@python-works.com>2010-05-23 02:07:56 +0200
committerMarcin Kuzminski <marcin@python-works.com>2010-05-23 02:07:56 +0200
commit9c9bab284e39bbe5270b1b89d307f19919e29541 (patch)
tree0116d2b5b6eab193e5bffd23c732ca1f43493adb
parent80dd6bff9975db1dcab58605f63c515e62f3ec5c (diff)
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)v0.7.1
-rw-r--r--pylons_app/__init__.py2
-rw-r--r--pylons_app/config/middleware.py3
-rw-r--r--pylons_app/controllers/feed.py51
3 files changed, 48 insertions, 8 deletions
diff --git a/pylons_app/__init__.py b/pylons_app/__init__.py
index 8517680b..db0cadf7 100644
--- a/pylons_app/__init__.py
+++ b/pylons_app/__init__.py
@@ -2,7 +2,7 @@
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]))
diff --git a/pylons_app/config/middleware.py b/pylons_app/config/middleware.py
index b2dfc15d..4058b252 100644
--- a/pylons_app/config/middleware.py
+++ b/pylons_app/config/middleware.py
@@ -44,7 +44,7 @@ def make_app(global_conf, full_stack=True, static_files=True, **app_conf):
# 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):
@@ -58,6 +58,7 @@ def make_app(global_conf, full_stack=True, static_files=True, **app_conf):
else:
app = StatusCodeRedirect(app, [400, 401, 403, 404, 500])
+ app = HttpsFixup(app)
# Establish the Registry for this application
app = RegistryManager(app)
diff --git a/pylons_app/controllers/feed.py b/pylons_app/controllers/feed.py
index 27edd0fe..44ca6c7d 100644
--- a/pylons_app/controllers/feed.py
+++ b/pylons_app/controllers/feed.py
@@ -2,11 +2,12 @@
# -*- 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):
@@ -14,9 +15,47 @@ 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)
+
+
+ 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))
- def atom(self):
- return 'Hello Atom'
+ 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')