changeset 1019:e4b7cfeb2eea beta

optimized filtering on journal
author Marcin Kuzminski <marcin@python-works.com>
date Thu, 10 Feb 2011 23:39:57 +0100
parents da5075ce681c
children 26114d182efe
files rhodecode/controllers/journal.py
diffstat 1 files changed, 15 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/controllers/journal.py	Thu Feb 10 22:41:30 2011 +0100
+++ b/rhodecode/controllers/journal.py	Thu Feb 10 23:39:57 2011 +0100
@@ -64,13 +64,22 @@
         user_ids = [x.follows_user.user_id for x in c.following
                     if x.follows_user is not None]
 
-        journal = self.sa.query(UserLog)\
-            .filter(or_(
-                        UserLog.repository_id.in_(repo_ids),
-                        UserLog.user_id.in_(user_ids),
-                        ))\
-            .order_by(UserLog.action_date.desc())
+        filtering_criterion = None
 
+        if repo_ids and user_ids:
+            filtering_criterion = or_(UserLog.repository_id.in_(repo_ids),
+                        UserLog.user_id.in_(user_ids))
+        if repo_ids and not user_ids:
+            filtering_criterion = UserLog.repository_id.in_(repo_ids)
+        if not repo_ids and user_ids:
+            filtering_criterion = UserLog.user_id.in_(user_ids)
+
+        if filtering_criterion is not None:
+            journal = self.sa.query(UserLog)\
+                .filter(filtering_criterion)\
+                .order_by(UserLog.action_date.desc())
+        else:
+            journal = []
 
         p = int(request.params.get('page', 1))
         c.journal_pager = Page(journal, page=p, items_per_page=10)