Пример #1
0
 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
Пример #2
0
        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)
Пример #3
0
 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()
Пример #4
0
    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)
Пример #5
0
 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)
Пример #6
0
 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')
Пример #7
0
 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
Пример #8
0
 def _clear_backlog_cache(self):
     BacklogModelManager(self.env).get_cache().invalidate()