def simple_metrics(request): now = timezone.now() if request.method == 'POST': form = SimpleMetricsForm(request.POST) if form.is_valid(): now = form.cleaned_data['date'] form = SimpleMetricsForm({'date': now}) else: form = SimpleMetricsForm({'date': now}) findings_by_product_type = collections.OrderedDict() # for each product type find each product with open findings and # count the S0, S1, S2 and S3 for pt in Product_Type.objects.order_by('name'): total_critical = [] total_high = [] total_medium = [] total_low = [] total_info = [] total_closed = [] total_opened = [] findings_broken_out = {} total = Finding.objects.filter( test__engagement__product__prod_type=pt, verified=True, false_p=False, duplicate=False, out_of_scope=False, date=now, ).distinct() for f in total.all(): if f.severity == "Critical": total_critical.append(f) elif f.severity == 'High': total_high.append(f) elif f.severity == 'Medium': total_medium.append(f) elif f.severity == 'Low': total_low.append(f) else: total_info.append(f) if f.mitigated and f.mitigated.year == now.year and f.mitigated.month == now.month: total_closed.append(f) if f.date.year == now.year and f.date.month == now.month: total_opened.append(f) findings_broken_out['Total'] = total.count() findings_broken_out['S0'] = len(total_critical) findings_broken_out['S1'] = len(total_high) findings_broken_out['S2'] = len(total_medium) findings_broken_out['S3'] = len(total_low) findings_broken_out['S4'] = len(total_info) findings_broken_out['Opened'] = len(total_opened) findings_broken_out['Closed'] = len(total_closed) findings_by_product_type[pt] = findings_broken_out add_breadcrumb(title="Simple Metrics", top_level=True, request=request) return render( request, 'dojo/simple_metrics.html', { 'findings': findings_by_product_type, 'name': 'Simple Metrics', 'metric': True, 'user': request.user, 'form': form, })
def simple_metrics(request): now = timezone.now() if request.method == 'POST': form = SimpleMetricsForm(request.POST) if form.is_valid(): now = form.cleaned_data['date'] form = SimpleMetricsForm({'date': now}) else: form = SimpleMetricsForm({'date': now}) findings_by_product_type = collections.OrderedDict() # for each product type find each product with open findings and # count the S0, S1, S2 and S3 for pt in Product_Type.objects.order_by('name'): total_critical = [] total_high = [] total_medium = [] total_low = [] total_info = [] total_closed = [] total_opened = [] findings_broken_out = {} total = Finding.objects.filter(test__engagement__product__prod_type=pt, verified=True, false_p=False, duplicate=False, out_of_scope=False, date=now, ).distinct() for f in total.all(): if f.severity == "Critical": total_critical.append(f) elif f.severity == 'High': total_high.append(f) elif f.severity == 'Medium': total_medium.append(f) elif f.severity == 'Low': total_low.append(f) else: total_info.append(f) if f.mitigated and f.mitigated.year == now.year and f.mitigated.month == now.month: total_closed.append(f) if f.date.year == now.year and f.date.month == now.month: total_opened.append(f) findings_broken_out['Total'] = total.count() findings_broken_out['S0'] = len(total_critical) findings_broken_out['S1'] = len(total_high) findings_broken_out['S2'] = len(total_medium) findings_broken_out['S3'] = len(total_low) findings_broken_out['S4'] = len(total_info) findings_broken_out['Opened'] = len(total_opened) findings_broken_out['Closed'] = len(total_closed) findings_by_product_type[pt] = findings_broken_out add_breadcrumb(title="Simple Metrics", top_level=True, request=request) return render(request, 'dojo/simple_metrics.html', { 'findings': findings_by_product_type, 'name': 'Simple Metrics', 'metric': True, 'user': request.user, 'form': form, })
def simple_metrics(request): now = timezone.now() if request.method == 'POST': form = SimpleMetricsForm(request.POST) if form.is_valid(): now = form.cleaned_data['date'] form = SimpleMetricsForm({'date': now}) else: form = SimpleMetricsForm({'date': now}) findings_by_product_type = collections.OrderedDict() # for each product type find each product with open findings and # count the S0, S1, S2 and S3 # legacy code calls has 'prod_type' as 'related_name' for product.... so weird looking prefetch product_types = get_authorized_product_types(Permissions.Product_Type_View) product_types = product_types.prefetch_related('prod_type', 'prod_type__authorized_users', 'authorized_users') for pt in product_types: total_critical = [] total_high = [] total_medium = [] total_low = [] total_info = [] total_closed = [] total_opened = [] findings_broken_out = {} total = Finding.objects.filter(test__engagement__product__prod_type=pt, verified=True, false_p=False, duplicate=False, out_of_scope=False, date__month=now.month, date__year=now.year, ).distinct().prefetch_related('test__engagement__product__authorized_users', 'test__engagement__product__prod_type__authorized_users') for f in total: if f.severity == "Critical": total_critical.append(f) elif f.severity == 'High': total_high.append(f) elif f.severity == 'Medium': total_medium.append(f) elif f.severity == 'Low': total_low.append(f) else: total_info.append(f) if f.mitigated and f.mitigated.year == now.year and f.mitigated.month == now.month: total_closed.append(f) if f.date.year == now.year and f.date.month == now.month: total_opened.append(f) findings_broken_out['Total'] = len(total) findings_broken_out['S0'] = len(total_critical) findings_broken_out['S1'] = len(total_high) findings_broken_out['S2'] = len(total_medium) findings_broken_out['S3'] = len(total_low) findings_broken_out['S4'] = len(total_info) findings_broken_out['Opened'] = len(total_opened) findings_broken_out['Closed'] = len(total_closed) findings_by_product_type[pt] = findings_broken_out add_breadcrumb(title="Simple Metrics", top_level=True, request=request) return render(request, 'dojo/simple_metrics.html', { 'findings': findings_by_product_type, 'name': 'Simple Metrics', 'metric': True, 'user': request.user, 'form': form, })