Switch to side-by-side view

--- a/ForgeTracker/forgetracker/tracker_main.py
+++ b/ForgeTracker/forgetracker/tracker_main.py
@@ -1150,6 +1150,30 @@
         return t
 
 
+def filtered_by_subscription(tickets, project_id=None, app_config_id=None):
+    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()
+    users = M.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 M.Mailbox.subscribed(**params):
+            filtered[uid] = ticket_ids  # subscribed to entire tool, will see all changes
+            continue
+        for t_id, data in tickets.iteritems():
+            params.update({'artifact': data['ticket']})
+            if M.Mailbox.subscribed(**params):
+                if filtered.get('uid') is None:
+                    filtered[uid] = []
+                filtered[uid].append(t_id)
+    return filtered
+
+
 class TicketController(BaseController):
 
     def __init__(self, ticket_num=None):