def get(self): client = self.request.user.get_client() form = SprintListFilterForm(self.request.GET, client=client) active_only = form.active_only.data limit = form.limit.data or 10 sprints = Sprint.query.order_by(Sprint.modified) if client: sprints = sprints.filter(Sprint.client_id == client.id) if form.project_id.data and form.project_id.data != 'None': project_id = int(form.project_id.data) project = Project.query.get(project_id) sprints = sprints.filter(Sprint.project_id == project_id) else: raise HTTPBadRequest all_sprints = copy.copy(sprints) velocity_chart_data = get_velocity_chart_data(all_sprints) if active_only: sprints = sprints.filter(Sprint.end >= datetime.date.today()) if limit: sprints.limit(limit) sprints = sprints.all() if sprints: stats = dict( worked_hours=sum([s.worked_hours for s in sprints]) / len(sprints), achieved=sum([s.achieved_points for s in sprints]) / len(sprints), commited=sum([s.commited_points for s in sprints]) / len(sprints), velocity=sum([s.velocity for s in sprints]) / len(sprints), ) else: stats = None all_sprints_for_velocity = DBSession.query( Sprint.project_id, Sprint.worked_hours, Sprint.bugs_worked_hours, Sprint.achieved_points ).all() for sprint in sprints: associated_sprints = [s for s in all_sprints_for_velocity if s[0]==sprint.project_id] sprint.calculate_velocities(associated_sprints) return dict( sprints=sprints, form=form, project=project, velocity_chart_data=velocity_chart_data, stats=stats, )
def get(self): client = self.request.user.get_client() form = SprintListFilterForm(self.request.GET, client=client) active_only = form.active_only.data limit = form.limit.data or 10 project = None sprints = Sprint.query.order_by(Sprint.start.desc()) all_sprints = None if form.project_id.data and form.project_id.data != 'None': project_id = int(form.project_id.data) project = Project.query.get(project_id) sprints = sprints.filter(Sprint.project_id == project_id) all_sprints = Sprint.query.order_by(Sprint.start)\ .filter(Sprint.project_id == project_id) if client: sprints = sprints.filter(Sprint.client_id == client.id) if all_sprints: all_sprints = all_sprints.filter(Sprint.client_id == client.id) if active_only: sprints = sprints.filter(Sprint.end >= datetime.date.today()) if limit: sprints.limit(limit) sprints = sprints.all() if all_sprints: velocity_chart_data = get_velocity_chart_data(all_sprints) if sprints: stats = dict( worked_hours=sum([s.worked_hours for s in sprints]) / len(sprints), achieved=sum([s.achieved_points for s in sprints]) / len(sprints), commited=sum([s.commited_points for s in sprints]) / len(sprints), velocity=sum([s.velocity for s in sprints]) / len(sprints), ) else: stats = None return dict( sprints=sprints, form=form, velocity_chart_data=velocity_chart_data if all_sprints else None, stats=stats, project=project)
def get(self): client = self.request.user.get_client() form = SprintListFilterForm(self.request.GET, client=client) active_only = form.active_only.data limit = form.limit.data or 10 project = None sprints = Sprint.query.order_by(Sprint.start.desc()) all_sprints = None if form.project_id.data and form.project_id.data != 'None': project_id = int(form.project_id.data) project = Project.query.get(project_id) sprints = sprints.filter(Sprint.project_id == project_id) all_sprints = Sprint.query.order_by(Sprint.start)\ .filter(Sprint.project_id == project_id) if client: sprints = sprints.filter(Sprint.client_id == client.id) if all_sprints: all_sprints = all_sprints.filter(Sprint.client_id == client.id) if active_only: sprints = sprints.filter(Sprint.end >= datetime.date.today()) if limit: sprints.limit(limit) sprints = sprints.all() if all_sprints: velocity_chart_data = get_velocity_chart_data(all_sprints) if sprints: stats = dict( worked_hours=sum([s.worked_hours for s in sprints]) / len(sprints), achieved=sum([s.achieved_points for s in sprints]) / len(sprints), commited=sum([s.commited_points for s in sprints]) / len(sprints), velocity=sum([s.velocity for s in sprints]) / len(sprints), ) else: stats = None return dict( sprints=sprints, form=form, velocity_chart_data=velocity_chart_data if all_sprints else None, stats=stats, project=project )