• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
Keine Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

allura


Commit MetaInfo

Revision9e5ba02e8aafb862fb68ce13ce0512cd5999948a (tree)
Zeit2012-04-19 06:44:28
AutorTim Van Steenburgh <tvansteenburgh@geek...>
CommiterJenny Steele

Log Message

[#4014] Tracker not sending notification mail.

1. Fixes a 500 in tracker notifications if project-level

notifications are disabled.

2. To accomodate migrated projects that may not have the default

_milestone field, the Edit Miletones page will now create it
on-the-fly if necessary.

Signed-off-by: Tim Van Steenburgh <tvansteenburgh@geek.net>

Ändern Zusammenfassung

Diff

--- a/ForgeTracker/forgetracker/model/ticket.py
+++ b/ForgeTracker/forgetracker/model/ticket.py
@@ -407,7 +407,7 @@ class Ticket(VersionedArtifact):
407407 Thread(discussion_id=self.app_config.discussion_id,
408408 ref_id=self.index_id())
409409 n = Notification.post(artifact=self, topic='metadata', text=description, subject=subject)
410- if monitoring_email:
410+ if monitoring_email and n:
411411 n.send_simple(monitoring_email)
412412 Feed.post(self, description)
413413
--- a/ForgeTracker/forgetracker/tests/functional/test_root.py
+++ b/ForgeTracker/forgetracker/tests/functional/test_root.py
@@ -45,6 +45,22 @@ class TestMilestones(TrackerTestController):
4545 r = self.app.get('/bugs/milestones')
4646 assert '1 / 2' in r, r.showbrowser()
4747
48+ def test_default_milestone_created_if_missing(self):
49+ p = M.Project.query.get(shortname='test')
50+ app = p.app_instance('bugs')
51+ app.globals.custom_fields = []
52+ ThreadLocalORMSession.flush_all()
53+ r = self.app.post('/bugs/update_milestones',{
54+ 'field_name':'_milestone',
55+ 'milestones-0.old_name':'',
56+ 'milestones-0.new_name':'1.0',
57+ 'milestones-0.description':'Version 1',
58+ 'milestones-0.complete':'Open',
59+ 'milestones-0.due_date':''
60+ })
61+ r = self.app.get('/bugs/milestones')
62+ assert 'Version 1' in r
63+
4864 class TestFunctionalController(TrackerTestController):
4965 def test_bad_ticket_number(self):
5066 self.app.get('/bugs/input.project_user_select', status=404)
@@ -912,6 +928,18 @@ class TestEmailMonitoring(TrackerTestController):
912928 assert send_simple.call_count == 1, send_simple.call_count
913929 send_simple.assert_called_with(self.test_email)
914930
931+ @patch('forgetracker.tracker_main.M.Notification.send_simple')
932+ def test_notifications_off(self, send_simple):
933+ """Test that tracker notification email is not sent if notifications
934+ are disabled at the project level.
935+ """
936+ p = M.Project.query.get(shortname='test')
937+ p.notifications_disabled = True
938+ ThreadLocalORMSession.flush_all()
939+ self._set_options()
940+ self.new_ticket(summary='test')
941+ assert send_simple.call_count == 0, send_simple.call_count
942+
915943 class TestCustomUserField(TrackerTestController):
916944 def setUp(self):
917945 super(TestCustomUserField, self).setUp()
--- a/ForgeTracker/forgetracker/tracker_main.py
+++ b/ForgeTracker/forgetracker/tracker_main.py
@@ -441,6 +441,14 @@ class RootController(BaseController):
441441 def update_milestones(self, field_name=None, milestones=None, **kw):
442442 require_access(c.app, 'configure')
443443 update_counts = False
444+ # If the default milestone field doesn't exist, create it.
445+ # TODO: This is a temporary fix for migrated projects, until we make
446+ # the Edit Milestones page capable of editing any/all milestone fields
447+ # instead of just the default "_milestone" field.
448+ if field_name == '_milestone' and \
449+ field_name not in c.app.globals.milestone_fields:
450+ c.app.globals.custom_fields.append(dict(name='_milestone',
451+ label='Milestone', type='milestone', milestones=[]))
444452 for fld in c.app.globals.milestone_fields:
445453 if fld.name == field_name:
446454 for new in milestones: