You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by tv...@apache.org on 2013/04/24 06:54:35 UTC

[30/50] [abbrv] git commit: [#2502] ticket:300 Send mass edit reports

[#2502] ticket:300 Send mass edit reports


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

Branch: refs/heads/tv/docs
Commit: be383197f85a2bfa4e5e2560d91d33733c993a7f
Parents: e843f9f
Author: Igor Bondarenko <je...@gmail.com>
Authored: Fri Apr 12 13:59:12 2013 +0000
Committer: Cory Johns <cj...@slashdotmedia.com>
Committed: Mon Apr 22 19:40:27 2013 +0000

----------------------------------------------------------------------
 .../forgetracker/tests/functional/test_root.py     |    8 ++--
 ForgeTracker/forgetracker/tracker_main.py          |   30 +++++++++++++++
 2 files changed, 34 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/be383197/ForgeTracker/forgetracker/tests/functional/test_root.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/tests/functional/test_root.py b/ForgeTracker/forgetracker/tests/functional/test_root.py
index 566f534..fe58a00 100644
--- a/ForgeTracker/forgetracker/tests/functional/test_root.py
+++ b/ForgeTracker/forgetracker/tests/functional/test_root.py
@@ -1119,22 +1119,22 @@ class TestFunctionalController(TrackerTestController):
         emails = M.MonQTask.query.find(dict(task_name='allura.tasks.mail_tasks.sendmail')).all()
         assert_equal(len(emails), 3)
         for email in emails:
-            assert_equal(email.kwargs.subject, '[test:bugs] Mass edit changes')
+            assert_equal(email.kwargs.subject, '[test:bugs] Mass edit changes by Test Admin')
         first_user_email = M.MonQTask.query.find({
             'task_name': 'allura.tasks.mail_tasks.sendmail',
-            'kwargs.destinations': first_user._id
+            'kwargs.destinations': str(first_user._id)
         }).all()
         assert_equal(len(first_user_email), 1)
         first_user_email = first_user_email[0]
         second_user_email = M.MonQTask.query.find({
             'task_name': 'allura.tasks.mail_tasks.sendmail',
-            'kwargs.destinations': second_user._id
+            'kwargs.destinations': str(second_user._id)
         }).all()
         assert_equal(len(second_user_email), 1)
         second_user_email = second_user_email[0]
         admin_email = M.MonQTask.query.find({
             'task_name': 'allura.tasks.mail_tasks.sendmail',
-            'kwargs.destinations': admin._id
+            'kwargs.destinations': str(admin._id)
         }).all()
         assert_equal(len(admin_email), 1)
         admin_email = admin_email[0]

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/be383197/ForgeTracker/forgetracker/tracker_main.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/tracker_main.py b/ForgeTracker/forgetracker/tracker_main.py
index 7ea8693..dc2df43 100644
--- a/ForgeTracker/forgetracker/tracker_main.py
+++ b/ForgeTracker/forgetracker/tracker_main.py
@@ -59,6 +59,7 @@ from allura.lib.zarkov_helpers import zero_fill_zarkov_result
 from allura.controllers import AppDiscussionController, AppDiscussionRestController
 from allura.controllers import attachments as ac
 from allura.controllers import BaseController
+from allura.tasks import mail_tasks
 
 # Local imports
 from forgetracker import model as TM
@@ -807,6 +808,8 @@ class RootController(BaseController):
                 custom_values[cf.name] = v
                 custom_fields[cf.name] = cf
 
+        changes = {}
+        changed_tickets = {}
         for ticket in tickets:
             message = ''
             for k, v in values.iteritems():
@@ -838,8 +841,35 @@ class RootController(BaseController):
                     new_value,
                     old_value)
             if message != '':
+                changes[ticket._id] = message
+                changed_tickets[ticket._id] = ticket
                 ticket.discussion_thread.post(message, notify=False)
                 ticket.commit()
+        filtered_changes = filtered_by_subscription(changed_tickets)
+        users = M.User.query.find({'_id': {'$in': filtered_changes.keys()}}).all()
+        mail = dict(
+            fromaddr = str(c.user._id),
+            reply_to = str(c.user._id),
+            message_id = h.gen_message_id(),
+            subject = '[%s:%s] Mass edit changes by %s' % (c.project.shortname,
+                                                           c.app.config.options.mount_point,
+                                                           c.user.display_name),
+        )
+        head = ['Mass edit changing:']
+        # TODO: add list with new values here
+        head = '\n'.join(head)
+        for user in users:
+            text = []
+            for t_id in filtered_changes.get(user._id, []):
+                text.append('ticket: [%s:#%d]' % (c.app.config.options.mount_point,
+                                                  changed_tickets[t_id].ticket_num))
+                text.append(changes[t_id])
+                text.append('')
+            mail.update(dict(
+                text = head + '\n\n' +  '\n'.join(text),
+                destinations = [str(user._id)]))
+            mail_tasks.sendmail.post(**mail)
+            # TODO: send summary on ticket's monitoring email
         c.app.globals.invalidate_bin_counts()
         ThreadLocalORMSession.flush_all()
         count = len(tickets)