Working a lot on issues stats
parent
8081652208
commit
0965e65ac0
|
@ -1,6 +1,8 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
from django.db.models import Q, Count
|
from django.db.models import Q, Count
|
||||||
|
import datetime
|
||||||
|
import copy
|
||||||
|
|
||||||
|
|
||||||
def _get_milestones_stats_for_backlog(project):
|
def _get_milestones_stats_for_backlog(project):
|
||||||
|
@ -98,9 +100,16 @@ def get_stats_for_project_issues(project):
|
||||||
'issues_per_severity': {},
|
'issues_per_severity': {},
|
||||||
'issues_per_owner': {},
|
'issues_per_owner': {},
|
||||||
'issues_per_assigned_to': {},
|
'issues_per_assigned_to': {},
|
||||||
|
'last_four_weeks_days': {
|
||||||
|
'by_open_closed': {'open': [], 'closed': []},
|
||||||
|
'by_severity': {},
|
||||||
|
'by_priority': {},
|
||||||
|
'open_progress': [],
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for issue in project.issues.all():
|
for issue in project.issues.all().prefetch_related('status', 'priority', 'type', 'severity', 'owner', 'assigned_to'):
|
||||||
project_issues_stats['total_issues'] += 1
|
project_issues_stats['total_issues'] += 1
|
||||||
_count_status_object(issue.type, project_issues_stats['issues_per_type'])
|
_count_status_object(issue.type, project_issues_stats['issues_per_type'])
|
||||||
_count_status_object(issue.status, project_issues_stats['issues_per_status'])
|
_count_status_object(issue.status, project_issues_stats['issues_per_status'])
|
||||||
|
@ -109,6 +118,40 @@ def get_stats_for_project_issues(project):
|
||||||
_count_owned_object(issue.owner, project_issues_stats['issues_per_owner'])
|
_count_owned_object(issue.owner, project_issues_stats['issues_per_owner'])
|
||||||
_count_owned_object(issue.assigned_to, project_issues_stats['issues_per_assigned_to'])
|
_count_owned_object(issue.assigned_to, project_issues_stats['issues_per_assigned_to'])
|
||||||
|
|
||||||
|
for severity in project_issues_stats['issues_per_severity'].values():
|
||||||
|
project_issues_stats['last_four_weeks_days']['by_severity'][severity['id']] = copy.copy(severity)
|
||||||
|
del(project_issues_stats['last_four_weeks_days']['by_severity'][severity['id']]['count'])
|
||||||
|
project_issues_stats['last_four_weeks_days']['by_severity'][severity['id']]['data'] = []
|
||||||
|
|
||||||
|
for priority in project_issues_stats['issues_per_priority'].values():
|
||||||
|
project_issues_stats['last_four_weeks_days']['by_priority'][priority['id']] = copy.copy(priority)
|
||||||
|
del(project_issues_stats['last_four_weeks_days']['by_priority'][priority['id']]['count'])
|
||||||
|
project_issues_stats['last_four_weeks_days']['by_priority'][priority['id']]['data'] = []
|
||||||
|
|
||||||
|
for x in range(27, -1, -1):
|
||||||
|
day = datetime.date.today() - datetime.timedelta(days=x)
|
||||||
|
next_day = day + datetime.timedelta(days=1)
|
||||||
|
project_issues_stats['last_four_weeks_days']['by_open_closed']['open'].append(
|
||||||
|
project.issues.filter(created_date__gte=day, created_date__lt=next_day).count()
|
||||||
|
)
|
||||||
|
project_issues_stats['last_four_weeks_days']['by_open_closed']['closed'].append(
|
||||||
|
project.issues.filter(finished_date__gte=day, finished_date__lt=next_day).count()
|
||||||
|
)
|
||||||
|
open_this_day = project.issues.filter(created_date__lt=next_day).filter(Q(finished_date__gt=day) | Q(finished_date__isnull=True))
|
||||||
|
for severity in project_issues_stats['last_four_weeks_days']['by_severity']:
|
||||||
|
project_issues_stats['last_four_weeks_days']['by_severity'][severity]['data'].append(
|
||||||
|
open_this_day.filter(severity_id=severity).count()
|
||||||
|
)
|
||||||
|
|
||||||
|
for priority in project_issues_stats['last_four_weeks_days']['by_priority']:
|
||||||
|
project_issues_stats['last_four_weeks_days']['by_priority'][priority]['data'].append(
|
||||||
|
open_this_day.filter(priority_id=priority).count()
|
||||||
|
)
|
||||||
|
|
||||||
|
project_issues_stats['last_four_weeks_days']['open_progress'].append(
|
||||||
|
open_this_day.count()
|
||||||
|
)
|
||||||
|
|
||||||
return project_issues_stats
|
return project_issues_stats
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue