changeset 3075:25029d6f4b47 beta

fixed issue with public journal rss/atom feeds after journal filter implementation
author Marcin Kuzminski <marcin@python-works.com>
date Fri, 07 Dec 2012 02:31:02 +0100
parents 09cef303962b
children 5deb16cd2802
files rhodecode/controllers/journal.py rhodecode/tests/functional/test_journal.py
diffstat 2 files changed, 29 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/controllers/journal.py	Fri Dec 07 02:15:34 2012 +0100
+++ b/rhodecode/controllers/journal.py	Fri Dec 07 02:31:02 2012 +0100
@@ -41,7 +41,7 @@
 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 @@
         self.language = 'en-us'
         self.ttl = "5"
         self.feed_nr = 20
+        c.search_term = request.GET.get('filter')
 
     @LoginRequired()
     @NotAnonymous()
@@ -66,8 +67,6 @@
             .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 @@
                          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 @@
             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 @@
                          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 @@
             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
--- a/rhodecode/tests/functional/test_journal.py	Fri Dec 07 02:15:34 2012 +0100
+++ b/rhodecode/tests/functional/test_journal.py	Fri Dec 07 02:31:02 2012 +0100
@@ -3,6 +3,7 @@
 from rhodecode.lib.helpers import get_token
 import datetime
 
+
 class TestJournalController(TestController):
 
     def test_index(self):
@@ -34,9 +35,10 @@
         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'),)