Example #1
0
 def save(self, db=None):
     """saves the object to the database"""
     db, handle_ta = get_db_for_write(self.env, db)
     try:
         for o_day, hours in self._calendar.items():
             entry = self.ce_manager.get(date=o_day,
                                         teammember=self.team_member,
                                         db=db)
             if not entry:
                 entry = self.ce_manager.create(date=o_day,
                                                teammember=self.team_member,
                                                db=db)
             # Save only exceptions
             if hours != self.team_member.capacity[datetime.fromordinal(
                     o_day).date().weekday()]:
                 entry.hours = hours
                 self.ce_manager.save(entry, db=db)
             elif entry.exists:  # we don't need it anymore
                 self.ce_manager.delete(entry, db=db)
         if handle_ta:
             db.commit()
         # Invalidate the Chart generator cache cause the capacity may be changed
         from agilo.charts import ChartGenerator
         ChartGenerator(self.env).invalidate_cache()
         return True
     except Exception, e:
         error(
             self,
             _("An error occurred while saving Calendar Entry: %s" %
               to_unicode(e)))
         if handle_ta:
             db.rollback()
         raise
Example #2
0
 def _execute(self, controller, date_converter=None, as_key=None):
     contingent = controller.get(sprint=self.sprint, name=self.name)
     assert contingent.name == self.name
     assert self.sprint.name == contingent.sprint.name, '%s != %s ' % (
         repr(self.sprint.name), repr(contingent.sprint.name))
     if controller.c_manager.delete(contingent):
         ChartGenerator(controller.env).invalidate_cache(
             sprint_name=self.sprint.name)
Example #3
0
 def _execute(self,
              metrics_controller,
              date_converter=None,
              as_key=None):
     metrics = self.sprint.get_team_metrics()
     metrics[self.name] = self.value
     metrics.save()
     # Need to invalidate the chart cache, or will not recalculate
     # the burndown with the new factor
     env = metrics_controller.env
     ChartGenerator(env).invalidate_cache(sprint_name=self.sprint.name)
Example #4
0
 def _execute(self, controller, date_converter=None, as_key=None):
     params = {'name': self.name, 'sprint': self.sprint}
     if self.amount.strip().endswith('%'):
         try:
             params['percent'] = float(self.amount[:-1])
         except ValueError:
             raise TracError(_('Invalid percentage provided...'))
     else:
         try:
             params['amount'] = float(self.amount)
         except ValueError:
             raise TracError(
                 _('Invalid number for amount: %s') % repr(self.amount))
     # Create the contingent
     controller.c_manager.create(**params)
     ChartGenerator(
         controller.env).invalidate_cache(sprint_name=self.sprint.name)
Example #5
0
 def _burndown_widget(self, sprint, backlog, filter_by):
     return ChartGenerator(self.env).get_chartwidget(
         ChartType.BURNDOWN,
         sprint_name=sprint.name,
         filter_by=filter_by,
         cached_data=dict(tickets=backlog))
Example #6
0
 def setUp(self):
     self.super()
     self.chartgenerator = ChartGenerator(self.env)
     self.component_manager = self.chartgenerator.compmgr
     self.component_manager.enabled[DummyChart] = True