def test_milestone(self): milestone = Milestone(self.env) milestone.name = 'New target date' milestone.description = 'Lorem ipsum dolor sit amet' milestone.insert() so = self._get_so() self.assertEquals('%s:milestone:New target date' % self.basename, so.doc_id) self.assertEquals('milestone', so.realm), self.assertEquals('New target date', so.id) self.assertTrue('New target date' in so.title) self.assertTrue('Lorem ipsum' in so.title) self.assertTrue('Lorem ipsum' in so.oneline) self.assertTrue('Lorem ipsum' in so.body) milestone.description = 'No latin filler here' milestone.due = datetime(2001, 01, 01, tzinfo=utc) milestone.update() so = self._get_so() self.assertEquals('%s:milestone:New target date' % self.basename, so.doc_id) self.assertEquals('milestone', so.realm), self.assertEquals('New target date', so.id) self.assertEquals(milestone.due, so.changed) self.assertFalse('Lorem ipsum' in so.body) self.assertTrue('No latin filler here' in so.body)
def process_request(self, req): milestone_id = req.args.get('id') req.perm('milestone', milestone_id).require('MILESTONE_VIEW') add_link(req, 'up', req.href.roadmap(), _('Roadmap')) action = req.args.get('action', 'view') try: milestone = Milestone(self.env, milestone_id) except ResourceNotFound: if 'MILESTONE_CREATE' not in req.perm('milestone', milestone_id): raise milestone = Milestone(self.env, None) milestone.name = milestone_id action = 'edit' # rather than 'new' so that it works for POST/save if req.method == 'POST': if req.args.has_key('cancel'): if milestone.exists: req.redirect(req.href.milestone(milestone.name)) else: req.redirect(req.href.roadmap()) elif action == 'edit': return self._do_save(req, milestone) elif action == 'delete': self._do_delete(req, milestone) elif action in ('new', 'edit'): return self._render_editor(req, milestone) elif action == 'delete': return self._render_confirm(req, milestone) if not milestone.name: req.redirect(req.href.roadmap()) return self._render_view(req, milestone)
def create_milestone(self, name, due=None, duration=20, db=None): """ Creates a milestone with the given name and due date, the latter should be a datetime object """ db, handle_ta = get_db_for_write(self.env, db) # Try to load the milestone first try: m = Milestone(self.env, name=name, db=db) except ResourceNotFound: # than we create it m = Milestone(self.env, db=db) m.name = name if due is not None and isinstance(due, datetime): dueo = due.toordinal() + duration m.due = mktime(datetime.fromordinal(dueo).timetuple()) m.insert() if handle_ta: try: db.commit() # workaround for the fact that trac in 0.11.1 doesn't set exists correctly... m._old_name = m.name except Exception, e: self.env.log.warning(exception_to_unicode(e)) db.rollback()
def change_milestone(self, name_to_change, name=None, description=None): milestone = Milestone(self.env, name_to_change) if name is not None: milestone.name = name if description is not None: milestone.description = description milestone.update() return milestone
def testMilestoneRenamePropagatesToSprints(self): """Tests that the rename of a Milestone, propagates to the Sprints, this is an AgiloMilestone feature""" m = Milestone(self.env) m.name = 'test_me' m.insert() s = self.teh.create_sprint('my sprint', milestone=m.name) self.assert_equals(m.name, s.milestone) # AT: we need to reload the milestone as there is a problem in trac, # that the insert is not updating the _old_name, making the update # silently fail. I sent a patch for this m = Milestone(self.env, m.name) m.name = 'test_me_not' m.update() smm = SprintModelManager(self.env) smm.get_cache().invalidate() s = smm.get(name=s.name) self.assert_equals(m.name, s.milestone)
def _create_milestone(self, name, duedate, description): m = Milestone(self.env) m.name = name m.description = description if duedate: if isinstance(duedate, type("")): m.due = parse_date(duedate) else: m.due = duedate m.insert()
def testMilestoneRenamePropagatesToTickets(self): """Tests that the Milestone renaming is propagated to the tickets, this should work out of the box, as it is a Trac feature""" m = Milestone(self.env) m.name = 'test_me' m.insert() t = self.teh.create_ticket(Type.REQUIREMENT, {Key.MILESTONE: m.name}) self.assert_equals(m.name, t[Key.MILESTONE]) # AT: we need to reload the milestone as there is a problem in trac, # that the insert is not updating the _old_name, making the update # silently fail. I sent a patch for this m = Milestone(self.env, m.name) m.name = 'test_me_not' m.update() # test the changes happened in the DB db = self.env.get_db_cnx() cursor = db.cursor() cursor.execute("SELECT id, milestone FROM ticket WHERE milestone='test_me'") for row in cursor: self.fail("Found one old milestone in ticket: #%s (%s)" % \ (row[0], row[1])) t = self.teh.load_ticket(t) self.assert_equals(m.name, t[Key.MILESTONE])
def test_remove_milestone(self): test_name = sys._getframe().f_code.co_name expected = self.expected_results[test_name] ticket = Ticket(self.env) ticket.populate({'reporter': 'santa', 'summary': 'Summary line', 'description': 'Lorem ipsum dolor sit amet', }) ticket.insert() milestone = Milestone(self.env) milestone.name = 'New target date' milestone.description = 'Lorem ipsum dolor sit amet' milestone.insert() self.assertEqual(2, len(self._get_docs())) rv, output = self._execute('fulltext remove milestone') self.assertEqual(expected, output) self.assertEqual(1, len(self._get_docs()))
def test_remove_milestone(self): test_name = sys._getframe().f_code.co_name expected = self.expected_results[test_name] ticket = Ticket(self.env) ticket.populate({ 'reporter': 'santa', 'summary': 'Summary line', 'description': 'Lorem ipsum dolor sit amet', }) ticket.insert() milestone = Milestone(self.env) milestone.name = 'New target date' milestone.description = 'Lorem ipsum dolor sit amet' milestone.insert() self.assertEqual(2, len(self._get_docs())) rv, output = self._execute('fulltext remove milestone') self.assertEqual(expected, output) self.assertEqual(1, len(self._get_docs()))
def test_can_save_due_date(self): # Added when Trac 0.12 was released as the format of the timestamp has changed in 0.12 milestone = Milestone(self.env) milestone.name = 'fnord' milestone.insert() # in trac 0.11.1, milestone._old_name is not set to "fnord" at # insert() time, only on init() or update() # so we need to reload the object to be able to run update() on it milestone = Milestone(self.env, name='fnord') expected_time = now().replace(microsecond=0) milestone.due = expected_time milestone.completed = expected_time milestone.update() loaded_milestone = Milestone(self.env, name='fnord') self.assert_equals(expected_time, loaded_milestone.due) self.assert_equals(expected_time, loaded_milestone.completed)
def create_milestone(self, name, description = None): milestone = Milestone(self.env) milestone.name = name if description is not None: milestone.description = description return milestone
def create_milestone(self, name, description=None): milestone = Milestone(self.env) milestone.name = name if description is not None: milestone.description = description return milestone