def _tickets(self, sp_controller): from agilo.scrum.backlog import BacklogModelManager backlog_manager = BacklogModelManager(sp_controller.env) backlog = backlog_manager.get(name=Key.SPRINT_BACKLOG, scope=self.sprint.name) fetched_tickets = [backlogitem.ticket for backlogitem in backlog] return fetched_tickets
def _execute(self, sp_controller, date_converter, as_key): from agilo.scrum.backlog import BacklogModelManager bmm = BacklogModelManager(sp_controller.env) sprint_backlog = bmm.get(name=Key.SPRINT_BACKLOG, scope=self.sprint.name) if sprint_backlog is not None: backlog_items = sprint_backlog.values() backlog_items_ids = [bi.ticket.id for bi in backlog_items] for bi in backlog_items: if (bi[Key.STATUS] == Status.CLOSED) or \ self._has_at_least_a_closed_child(bi.ticket, backlog_items_ids): # This container already had work on it started. Therefore we leave it in # this sprint to make clear that this is the sprint the story was started. # (to retain historical data) # In this case we just leave the ticket where it was # No sense in deleting the BacklogItem, as it will be recreated anyway on the next load # (Deleting the sprint from the ticket would delete the BacklogItem) continue elif (bi[Key.SPRINT] == self.sprint.name): log.info(sp_controller.env, u'Retargeting ticket %d to sprint %s' % \ (bi.ticket.id, self.retarget.name)) # changing the ticket is enough to move the backlog item to the # new backlog as the BacklogUpdater will do that bi.ticket[Key.SPRINT] = self.retarget.name bi.ticket.save_changes(author=self.author, comment='Moved from sprint %s' % self.sprint.name) else: # This wasn't specifically planned and has not closed # child left, therefore we can remove it sprint_backlog.remove(bi)
def setUp(self): self.super() self.bmm = BacklogModelManager(self.teh.get_env()) self.team = self.teh.create_team('FooTeam') self.teh.create_member('tester', self.team) self.teh.create_member('Foo', self.team) self.sprint = self.teh.create_sprint('ResourceLoadSprint', team=self.team) self.build_sprint_backlog_with_tasks(self.sprint) self.controller = SprintController(self.env) self.metrics = self.sprint.get_team_metrics()
def setUp(self): self.super() self.controller = SprintController(self.env) self.team = self.teh.create_team('Test team') # Preventing a RuleValidationException (Owner not Team Member) self.teh.create_member(name='tester', team=self.team) self.sprint = self.teh.create_sprint("Test Sprint", team=self.team) self.metrics = TeamMetrics(self.env, self.sprint, self.team) self.metrics[Key.RT_USP_RATIO] = 1.5 self.metrics.save() self.bmm = BacklogModelManager(self.env) self.smm = SprintModelManager(self.env) self.sprint_backlog, self.story1, self.task1, self.task2 = \ self._build_sprint_backlog_with_tasks(self.sprint)
def setUp(self): self.super() self.old_sprint = self.teh.create_sprint("Sprint One") self.new_sprint = self.teh.create_sprint( "New Sprint", milestone=self.old_sprint.milestone) self.us1 = self.teh.create_ticket( Type.USER_STORY, props={Key.SPRINT: self.old_sprint.name}) self.t1 = self.teh.create_ticket(Type.TASK, props={ Key.SPRINT: self.old_sprint.name, Key.REMAINING_TIME: '12' }) self.us1.link_to(self.t1) self.t2 = self.teh.create_ticket(Type.TASK, props={ Key.SPRINT: self.old_sprint.name, Key.REMAINING_TIME: '12' }) self.us1.link_to(self.t2) self.teh.move_changetime_to_the_past([self.us1, self.t1, self.t2]) # build a sprint controller self.controller = SprintController(self.env) self.bmm = BacklogModelManager(self.env)
def setUp(self): self.super() self.sprint = self.create_sprint_with_team('TestSprint') self.controller = SprintController(self.env) self.bmm = BacklogModelManager(self.env) self.team = self.teh.create_team('ControllerTeam')
def _get_backlog(self, env, sprint): from agilo.scrum.backlog import BacklogModelManager backlog = BacklogModelManager(env).get(name=Key.SPRINT_BACKLOG, scope=sprint.name) return backlog
def _clear_backlog_cache(self): BacklogModelManager(self.env).get_cache().invalidate()