[#4014] Fixed bug in default milestone creation.
Signed-off-by: Tim Van Steenburgh <tvansteenburgh@geek.net>
diff --git a/ForgeTracker/forgetracker/tests/functional/test_root.py b/ForgeTracker/forgetracker/tests/functional/test_root.py
index b1a5c6c..d2741f9 100644
--- a/ForgeTracker/forgetracker/tests/functional/test_root.py
+++ b/ForgeTracker/forgetracker/tests/functional/test_root.py
@@ -50,16 +50,22 @@
app = p.app_instance('bugs')
app.globals.custom_fields = []
ThreadLocalORMSession.flush_all()
- r = self.app.post('/bugs/update_milestones',{
+ d = {
'field_name':'_milestone',
'milestones-0.old_name':'',
'milestones-0.new_name':'1.0',
'milestones-0.description':'Version 1',
'milestones-0.complete':'Open',
'milestones-0.due_date':''
- })
+ }
+ r = self.app.post('/bugs/update_milestones', d)
r = self.app.get('/bugs/milestones')
assert 'Version 1' in r
+ # make sure _milestone doesn't get created again if it already exists
+ r = self.app.post('/bugs/update_milestones', d)
+ p = M.Project.query.get(shortname='test')
+ app = p.app_instance('bugs')
+ assert len(app.globals.custom_fields) == 1, len(app.globals.custom_fields)
class TestFunctionalController(TrackerTestController):
def test_bad_ticket_number(self):
diff --git a/ForgeTracker/forgetracker/tracker_main.py b/ForgeTracker/forgetracker/tracker_main.py
index 0f76a6b..c3635e9 100644
--- a/ForgeTracker/forgetracker/tracker_main.py
+++ b/ForgeTracker/forgetracker/tracker_main.py
@@ -446,7 +446,7 @@
# the Edit Milestones page capable of editing any/all milestone fields
# instead of just the default "_milestone" field.
if field_name == '_milestone' and \
- field_name not in c.app.globals.milestone_fields:
+ field_name not in [m.name for m in c.app.globals.milestone_fields]:
c.app.globals.custom_fields.append(dict(name='_milestone',
label='Milestone', type='milestone', milestones=[]))
for fld in c.app.globals.milestone_fields: