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/23 18:42:41 UTC
[37/50] [abbrv] git commit: [#2502] ticket:300 Use template for mass
report
[#2502] ticket:300 Use template for mass report
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/92f0595f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/92f0595f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/92f0595f
Branch: refs/heads/cj/5120
Commit: 92f0595ff4261856773cf4b4e6390bdcfd3ad998
Parents: be38319
Author: Igor Bondarenko <je...@gmail.com>
Authored: Tue Apr 16 10:55:03 2013 +0000
Committer: Cory Johns <cj...@slashdotmedia.com>
Committed: Mon Apr 22 19:40:27 2013 +0000
----------------------------------------------------------------------
ForgeTracker/forgetracker/data/mass_report | 6 +++
.../forgetracker/tests/functional/test_root.py | 28 +++++++--------
ForgeTracker/forgetracker/tracker_main.py | 26 ++++++++------
3 files changed, 34 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/92f0595f/ForgeTracker/forgetracker/data/mass_report
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/data/mass_report b/ForgeTracker/forgetracker/data/mass_report
new file mode 100644
index 0000000..629a1e2
--- /dev/null
+++ b/ForgeTracker/forgetracker/data/mass_report
@@ -0,0 +1,6 @@
+{{ data.header }}
+
+{% for t_num, change_text in data.changes %}
+ticket: [{{ context.app.config.options.mount_point }}:#{{ t_num }}]
+{{ change_text }}
+{% endfor %}
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/92f0595f/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 fe58a00..760f740 100644
--- a/ForgeTracker/forgetracker/tests/functional/test_root.py
+++ b/ForgeTracker/forgetracker/tests/functional/test_root.py
@@ -1141,30 +1141,28 @@ class TestFunctionalController(TrackerTestController):
# Expected data
email_header = '''Mass edit changing:
-- **status**: accepted
-- **Milestone: 2.0
+- **Status**: accepted
+- **Milestone**: 2.0
+
'''
first_ticket_changes = '''ticket: [bugs:#1]
-- **status**: open --> accepted
-- **Milestone: 2.0 --> 2.0
+- **Status**: open --> accepted
'''
second_ticket_changes = '''ticket: [bugs:#2]
-- **status**: accepted --> accepted
-- **Milestone: 1.0 --> 2.0
+- **Milestone**: 1.0 --> 2.0
'''
third_ticket_changes = '''ticket: [bugs:#3]
-- **status**: unread --> accepted
-- **Milestone: --> 2.0
+- **Status**: unread --> accepted
+- **Milestone**: 1.0 --> 2.0
'''
- email = '\n'.join([email_header, first_ticket_changes])
+ email = u'\n'.join([email_header, first_ticket_changes, ''])
assert_equal(email, first_user_email.kwargs.text)
- email = '\n'.join([email_header, second_ticket_changes])
+ email = u'\n'.join([email_header, second_ticket_changes, ''])
assert_equal(email, second_user_email.kwargs.text)
- email = '\n'.join([email_header,
- first_ticket_changes,
- second_ticket_changes,
- third_ticket_changes])
- assert_equal(email, admin_email.kwargs.text)
+ assert_in(email_header, admin_email.kwargs.text)
+ assert_in(first_ticket_changes, admin_email.kwargs.text)
+ assert_in(second_ticket_changes, admin_email.kwargs.text)
+ assert_in(third_ticket_changes, admin_email.kwargs.text)
def test_filtered_by_subscription(self):
self.new_ticket(summary='test first ticket', status='open')
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/92f0595f/ForgeTracker/forgetracker/tracker_main.py
----------------------------------------------------------------------
diff --git a/ForgeTracker/forgetracker/tracker_main.py b/ForgeTracker/forgetracker/tracker_main.py
index dc2df43..132f9ec 100644
--- a/ForgeTracker/forgetracker/tracker_main.py
+++ b/ForgeTracker/forgetracker/tracker_main.py
@@ -24,6 +24,7 @@ from urllib2 import urlopen
from webob import exc
import json
from itertools import ifilter, imap
+import jinja2
# Non-stdlib imports
import pkg_resources
@@ -37,6 +38,7 @@ from bson import ObjectId
from bson.son import SON
from bson.errors import InvalidId
from webhelpers import feedgenerator as FG
+from paste.deploy.converters import asbool
from ming import schema
from ming.orm.ormsession import ThreadLocalORMSession
@@ -847,26 +849,28 @@ class RootController(BaseController):
ticket.commit()
filtered_changes = filtered_by_subscription(changed_tickets)
users = M.User.query.find({'_id': {'$in': filtered_changes.keys()}}).all()
+ def changes_iter(user):
+ for t_id in filtered_changes.get(user._id, []):
+ yield (changed_tickets[t_id].ticket_num, changes[t_id])
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)
+ tmpl = jinja2.Environment(
+ loader=jinja2.PackageLoader('forgetracker', 'data'),
+ auto_reload=asbool(config.get('auto_reload_templates', True)),
+ ).get_template('mass_report')
+ head = ['- **%s**: %s' % (get_label(f), v) for f, v in values.iteritems()]
+ head += ['- **%s**: %s' % (get_label(f), v) for f, v in custom_values.iteritems()]
+ tmpl_context = {'context': c, 'data': {'header': '\n'.join(['Mass edit changing:'] + 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('')
+ tmpl_context['data'].update({'changes': changes_iter(user)})
mail.update(dict(
- text = head + '\n\n' + '\n'.join(text),
+ message_id = h.gen_message_id(),
+ text = tmpl.render(tmpl_context),
destinations = [str(user._id)]))
mail_tasks.sendmail.post(**mail)
# TODO: send summary on ticket's monitoring email