aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcin Kuzminski <marcin@python-works.com>2012-12-07 02:31:02 +0100
committerMarcin Kuzminski <marcin@python-works.com>2012-12-07 02:31:02 +0100
commit28d68ef3ccf4601fedc5290a47fdf74bf6e60393 (patch)
tree682f772c3f7be07224c8005b49f3fe37446b34e9
parent6eee7121051a34eea8861bd5f75367e00560aa29 (diff)
fixed issue with public journal rss/atom feeds after journal filter implementation
--HG-- branch : beta
-rw-r--r--rhodecode/controllers/journal.py33
-rw-r--r--rhodecode/tests/functional/test_journal.py12
2 files changed, 29 insertions, 16 deletions
diff --git a/rhodecode/controllers/journal.py b/rhodecode/controllers/journal.py
index ed0bd2d2..9d499d19 100644
--- a/rhodecode/controllers/journal.py
+++ b/rhodecode/controllers/journal.py
@@ -41,7 +41,7 @@ from rhodecode.model.db import UserLog, UserFollowing, Repository, User
from rhodecode.model.meta import Session
from sqlalchemy.sql.expression import func
from rhodecode.model.scm import ScmModel
-from rhodecode.lib.utils2 import safe_int
+from rhodecode.lib.utils2 import safe_int, AttributeDict
from rhodecode.controllers.admin.admin import _journal_filter
log = logging.getLogger(__name__)
@@ -54,6 +54,7 @@ class JournalController(BaseController):
self.language = 'en-us'
self.ttl = "5"
self.feed_nr = 20
+ c.search_term = request.GET.get('filter')
@LoginRequired()
@NotAnonymous()
@@ -66,8 +67,6 @@ class JournalController(BaseController):
.options(joinedload(UserFollowing.follows_repository))\
.all()
- #FILTERING
- c.search_term = request.GET.get('filter')
journal = self._get_journal_data(c.following)
def url_generator(**kw):
@@ -229,9 +228,15 @@ class JournalController(BaseController):
ttl=self.ttl)
for entry in journal[:self.feed_nr]:
+ user = entry.user
+ if user is None:
+ #fix deleted users
+ user = AttributeDict({'short_contact': entry.username,
+ 'email': '',
+ 'full_contact': ''})
action, action_extra, ico = h.action_parser(entry, feed=True)
- title = "%s - %s %s" % (entry.user.short_contact, action(),
- entry.repository.repo_name)
+ title = "%s - %s %s" % (user.short_contact, action(),
+ entry.repository.repo_name)
desc = action_extra()
_url = None
if entry.repository is not None:
@@ -242,8 +247,8 @@ class JournalController(BaseController):
feed.add_item(title=title,
pubdate=entry.action_date,
link=_url or url('', qualified=True),
- author_email=entry.user.email,
- author_name=entry.user.full_contact,
+ author_email=user.email,
+ author_name=user.full_contact,
description=desc)
response.content_type = feed.mime_type
@@ -266,9 +271,15 @@ class JournalController(BaseController):
ttl=self.ttl)
for entry in journal[:self.feed_nr]:
+ user = entry.user
+ if user is None:
+ #fix deleted users
+ user = AttributeDict({'short_contact': entry.username,
+ 'email': '',
+ 'full_contact': ''})
action, action_extra, ico = h.action_parser(entry, feed=True)
- title = "%s - %s %s" % (entry.user.short_contact, action(),
- entry.repository.repo_name)
+ title = "%s - %s %s" % (user.short_contact, action(),
+ entry.repository.repo_name)
desc = action_extra()
_url = None
if entry.repository is not None:
@@ -279,8 +290,8 @@ class JournalController(BaseController):
feed.add_item(title=title,
pubdate=entry.action_date,
link=_url or url('', qualified=True),
- author_email=entry.user.email,
- author_name=entry.user.full_contact,
+ author_email=user.email,
+ author_name=user.full_contact,
description=desc)
response.content_type = feed.mime_type
diff --git a/rhodecode/tests/functional/test_journal.py b/rhodecode/tests/functional/test_journal.py
index 62544453..eb24dc29 100644
--- a/rhodecode/tests/functional/test_journal.py
+++ b/rhodecode/tests/functional/test_journal.py
@@ -3,6 +3,7 @@ from rhodecode.model.db import UserFollowing, User, Repository
from rhodecode.lib.helpers import get_token
import datetime
+
class TestJournalController(TestController):
def test_index(self):
@@ -34,9 +35,10 @@ class TestJournalController(TestController):
self.log_user()
response = self.app.get(url(controller='journal', action='index'),)
+ def test_public_journal_atom(self):
+ self.log_user()
+ response = self.app.get(url(controller='journal', action='public_journal_atom'),)
- def __add_repo(self):
- pass
-
- def __remove_repo(self):
- pass
+ def test_public_journal_rss(self):
+ self.log_user()
+ response = self.app.get(url(controller='journal', action='public_journal_rss'),)