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
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)
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)
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)
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))
def setUp(self): self.super() self.chartgenerator = ChartGenerator(self.env) self.component_manager = self.chartgenerator.compmgr self.component_manager.enabled[DummyChart] = True