You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by jo...@apache.org on 2013/06/27 01:57:08 UTC

[2/3] git commit: [#6203] ticket:377 refactored filtered_by_subscription to a single mongo query

[#6203] ticket:377 refactored filtered_by_subscription to a single mongo query


Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/0b647395
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/0b647395
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/0b647395

Branch: refs/heads/master
Commit: 0b6473954be2990a784cee9037170185ebff02f4
Parents: a36f8c3
Author: Yuriy Arhipov <yu...@yandex.ru>
Authored: Wed Jun 26 14:11:55 2013 +0400
Committer: Cory Johns <cj...@slashdotmedia.com>
Committed: Wed Jun 26 23:04:30 2013 +0000

----------------------------------------------------------------------
 ForgeTracker/forgetracker/model/ticket.py | 26 +++++++++++---------------
 1 file changed, 11 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/0b647395/ForgeTracker/forgetracker/model/ticket.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/model/ticket.py b/ForgeTracker/forgetracker/model/ticket.py
index 62c1021..c4e58da 100644
--- a/ForgeTracker/forgetracker/model/ticket.py
+++ b/ForgeTracker/forgetracker/model/ticket.py
@@ -324,9 +324,11 @@ class Globals(MappedClass):
         changed_tickets = {}
         for ticket in tickets:
             message = ''
+            new_user = None
             for k, v in sorted(values.iteritems()):
                 if k == 'assigned_to_id':
-                    new_user = User.query.get(_id=v)
+                    if not new_user:
+                        new_user = User.query.get(_id=v)
                     old_user = User.query.get(_id=getattr(ticket, k))
                     if new_user:
                         message += get_change_text(
@@ -423,23 +425,17 @@ class Globals(MappedClass):
         p_id = project_id if project_id else c.project._id
         ac_id = app_config_id if app_config_id else c.app.config._id
         ticket_ids = tickets.keys()
+        tickets_index_id = {ticket.index_id(): t_id for t_id, ticket in tickets.iteritems()}
         users = Mailbox.query.find(dict(project_id=p_id, app_config_id=ac_id))
-        users = [u.user_id for u in users]
         filtered = {}
-        for uid in users:
-            params = dict(
-                user_id=uid,
-                project_id=p_id,
-                app_config_id=ac_id)
-            if Mailbox.subscribed(**params):
-                filtered[uid] = set(ticket_ids)  # subscribed to entire tool, will see all changes
+        for user in users:
+            if user.artifact_index_id is None:
+                filtered[user.user_id] = set(ticket_ids)  # subscribed to entire tool, will see all changes
                 continue
-            for t_id, ticket in tickets.iteritems():
-                params.update({'artifact': ticket})
-                if Mailbox.subscribed(**params):
-                    if filtered.get(uid) is None:
-                        filtered[uid] = set()
-                    filtered[uid].add(t_id)
+            elif user.artifact_index_id in tickets_index_id.keys():
+                if filtered.get(user.user_id) is None:
+                    filtered[user.user_id] = set()
+                filtered[user.user_id].add(tickets_index_id[user.artifact_index_id])
         return filtered