def avg_ageing(self, user, kwargs={}, exclude_kwargs={}): raw_vuls = self.get_open_vul_query(user, kwargs, exclude_kwargs) open_vuls = raw_vuls.annotate(open_for=Max(Aging('created_on'))) avg_ageing_val = 0 if open_vuls: all_ageing_count = [v.get('open_for') for v in open_vuls] if all_ageing_count: avg_ageing_val = math.ceil( sum(all_ageing_count) / len(all_ageing_count)) return avg_ageing_val
def vuls(self, user, kwargs={}, exclude_kwargs={}): raw_vuls = self.get_open_vul_fp_query(user, kwargs, exclude_kwargs) open_vuls = raw_vuls.annotate(tools=GroupConcat('tool',distinct=True),\ count=Count('name',distinct=True),\ apps=GroupConcat('scan__application__name',distinct=True),\ open_for=Max(Aging('created_on')),\ names=GroupConcat(Concat('name',V('###'),'scan__application__name',V('###'),V('###')),distinct=True)) return open_vuls.values('tools', 'severity', 'apps', 'common_name', 'open_for', 'names', 'cwe', 'count').order_by('-severity')
def avg_ageing(self, kwargs={}, exclude_kwargs={}): ReportProcedures.set_max_value() raw_vuls = self.get_open_vul_query(kwargs, exclude_kwargs) open_vuls = raw_vuls.annotate(open_for=Aging('created_on')) all_ageing_count = [v.get('open_for') for v in open_vuls] avg_ageing_val = 0 if all_ageing_count: avg_ageing_val = math.ceil( sum(all_ageing_count) / len(all_ageing_count)) return avg_ageing_val
def vuls(self, user, kwargs={}, exclude_kwargs={}): ReportProcedures.set_max_value() raw_vuls = self.get_open_vul_query(kwargs, exclude_kwargs) open_vuls = raw_vuls.annotate(tools=GroupConcat('tool',distinct=True),\ count=Count('name',distinct=True),\ apps=GroupConcat('scan__application__name',distinct=True),\ common_name=GroupConcat('common_name',distinct=True),\ open_for=Aging('created_on'),\ names=GroupConcat(Concat('name',V('###'),'scan__application__name',V('###'),'jira_id',V('###'),'jira_issue_status'),distinct=True)) return open_vuls.values('tools', 'severity', 'apps', 'common_name', 'open_for', 'names', 'cwe', 'count').order_by('-severity')
def vuls(self, kwargs={}, exclude_kwargs={}): ReportProcedures.set_max_value() raw_vuls = self.get_open_vul_query(kwargs, exclude_kwargs) open_vuls = raw_vuls.annotate(tools=GroupConcat('tool',distinct=True),\ count=Count('name',distinct=True),\ severity=Max('severity'),\ bug_id=F('jira_id'),\ bug_status=F('jira_issue_status'),\ apps=GroupConcat('scan__application__name',distinct=True),\ common_name=GroupConcat('common_name',distinct=True),\ open_for=Aging('created_on'),\ names=GroupConcat(Concat('name',V('###'),'scan__application__name'),distinct=True)) return open_vuls
def aging_count(self, kwargs={}, exclude_kwargs={}): aging_list = self.get_open_vul_query(kwargs, exclude_kwargs)\ .annotate(open_for=Aging('created_on'))\ .values_list('open_for',flat=True) days = dict(Counter(aging_list)) days_list = [] for day, count in days.items(): if day <= 5: days_list.append(('0-5 days', count)) elif day > 5 and day <= 10: days_list.append(('6-10 days', count)) elif day > 10 and day <= 20: days_list.append(('11-20 days', count)) elif day > 20 and day <= 40: days_list.append(('21-40 days', count)) elif day > 40 and day <= 80: days_list.append(('41-80 days', count)) elif day > 80 and day <= 100: days_list.append(('81-100 days', count)) elif day > 100: days_list.append(('More than 100 days', count)) return days_list
def aging_count(self, user, kwargs={}, exclude_kwargs={}): aging_list = self.get_open_vul_query(user, kwargs, exclude_kwargs)\ .annotate(open_for=Aging('created_on'))\ .values_list('open_for','severity') days_dict = { 1: { '0-5 days': { 0: 0, 1: 0, 2: 0, 3: 0 } }, 2: { '6-10 days': { 0: 0, 1: 0, 2: 0, 3: 0 } }, 3: { '11-20 days': { 0: 0, 1: 0, 2: 0, 3: 0 } }, 4: { '21-40 days': { 0: 0, 1: 0, 2: 0, 3: 0 } }, 5: { '41-80 days': { 0: 0, 1: 0, 2: 0, 3: 0 } }, 6: { '81-100 days': { 0: 0, 1: 0, 2: 0, 3: 0 } }, 7: { 'More than 100 days': { 0: 0, 1: 0, 2: 0, 3: 0 } }, } for day, severity in aging_list: if day <= 5: days_dict[1]['0-5 days'][ severity] = days_dict[1]['0-5 days'][severity] + 1 elif day > 5 and day <= 10: days_dict[2]['6-10 days'][ severity] = days_dict[2]['6-10 days'][severity] + 1 elif day > 10 and day <= 20: days_dict[3]['11-20 days'][ severity] = days_dict[3]['11-20 days'][severity] + 1 elif day > 20 and day <= 40: days_dict[4]['21-40 days'][ severity] = days_dict[4]['21-40 days'][severity] + 1 elif day > 40 and day <= 80: days_dict[5]['41-80 days'][ severity] = days_dict[5]['41-80 days'][severity] + 1 elif day > 80 and day <= 100: days_dict[6]['81-100 days'][ severity] = days_dict[6]['81-100 days'][severity] + 1 elif day > 100: days_dict[7]['More than 100 days'][severity] = days_dict[7][ 'More than 100 days'][severity] + 1 return days_dict