Beispiel #1
0
    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,
        )
Beispiel #2
0
    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)
Beispiel #3
0
    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
        )