|
33 | 33 | identify_view, |
34 | 34 | severity_count, |
35 | 35 | ) |
36 | | -from dojo.models import Dojo_User, Finding, Product, Product_Type, Risk_Acceptance |
| 36 | +from dojo.models import Dojo_User, Finding, Product_Type, Risk_Acceptance |
37 | 37 | from dojo.product.queries import get_authorized_products |
38 | 38 | from dojo.product_type.queries import get_authorized_product_types |
39 | 39 | from dojo.utils import ( |
@@ -355,15 +355,20 @@ def product_type_counts(request): |
355 | 355 | "reporter").order_by( |
356 | 356 | "numerical_severity") |
357 | 357 |
|
358 | | - top_ten = Product.objects.filter(engagement__test__finding__date__lte=end_date, |
359 | | - engagement__test__finding__verified=True, |
360 | | - engagement__test__finding__false_p=False, |
361 | | - engagement__test__finding__duplicate=False, |
362 | | - engagement__test__finding__out_of_scope=False, |
363 | | - engagement__test__finding__mitigated__isnull=True, |
364 | | - engagement__test__finding__severity__in=( |
365 | | - "Critical", "High", "Medium", "Low"), |
366 | | - prod_type=pt) |
| 358 | + # Build Top 10 from Findings for this product type |
| 359 | + top_ten = Finding.objects.filter( |
| 360 | + date__lte=end_date, |
| 361 | + verified=True, |
| 362 | + false_p=False, |
| 363 | + duplicate=False, |
| 364 | + out_of_scope=False, |
| 365 | + mitigated__isnull=True, |
| 366 | + severity__in=("Critical", "High", "Medium", "Low"), |
| 367 | + test__engagement__product__prod_type=pt, |
| 368 | + ).values( |
| 369 | + name=F("test__engagement__product__name"), |
| 370 | + ) |
| 371 | + top_ten = severity_count(top_ten, "annotate", "severity").order_by("-critical", "-high", "-medium", "-low")[:10] |
367 | 372 | else: |
368 | 373 | overall_in_pt = Finding.objects.filter(date__lt=end_date, |
369 | 374 | false_p=False, |
@@ -400,16 +405,20 @@ def product_type_counts(request): |
400 | 405 | "reporter").order_by( |
401 | 406 | "numerical_severity") |
402 | 407 |
|
403 | | - top_ten = Product.objects.filter(engagement__test__finding__date__lte=end_date, |
404 | | - engagement__test__finding__false_p=False, |
405 | | - engagement__test__finding__duplicate=False, |
406 | | - engagement__test__finding__out_of_scope=False, |
407 | | - engagement__test__finding__mitigated__isnull=True, |
408 | | - engagement__test__finding__severity__in=( |
409 | | - "Critical", "High", "Medium", "Low"), |
410 | | - prod_type=pt) |
411 | | - |
412 | | - top_ten = severity_count(top_ten, "annotate", "engagement__test__finding__severity").order_by("-critical", "-high", "-medium", "-low")[:10] |
| 408 | + top_ten = Finding.objects.filter( |
| 409 | + date__lte=end_date, |
| 410 | + false_p=False, |
| 411 | + duplicate=False, |
| 412 | + out_of_scope=False, |
| 413 | + mitigated__isnull=True, |
| 414 | + severity__in=("Critical", "High", "Medium", "Low"), |
| 415 | + test__engagement__product__prod_type=pt, |
| 416 | + ).values( |
| 417 | + name=F("test__engagement__product__name"), |
| 418 | + ) |
| 419 | + top_ten = severity_count(top_ten, "annotate", "severity").order_by("-critical", "-high", "-medium", "-low")[:10] |
| 420 | + |
| 421 | + # top_ten already annotated above using Findings-based grouping |
413 | 422 |
|
414 | 423 | cip = {"S0": 0, |
415 | 424 | "S1": 0, |
@@ -557,15 +566,21 @@ def product_tag_counts(request): |
557 | 566 | "reporter").order_by( |
558 | 567 | "numerical_severity") |
559 | 568 |
|
560 | | - top_ten = Product.objects.filter(engagement__test__finding__date__lte=end_date, |
561 | | - engagement__test__finding__verified=True, |
562 | | - engagement__test__finding__false_p=False, |
563 | | - engagement__test__finding__duplicate=False, |
564 | | - engagement__test__finding__out_of_scope=False, |
565 | | - engagement__test__finding__mitigated__isnull=True, |
566 | | - engagement__test__finding__severity__in=( |
567 | | - "Critical", "High", "Medium", "Low"), |
568 | | - tags__name=pt, engagement__product__in=prods) |
| 569 | + # Build Top 10 from Findings for this product tag |
| 570 | + top_ten = Finding.objects.filter( |
| 571 | + date__lte=end_date, |
| 572 | + verified=True, |
| 573 | + false_p=False, |
| 574 | + duplicate=False, |
| 575 | + out_of_scope=False, |
| 576 | + mitigated__isnull=True, |
| 577 | + severity__in=("Critical", "High", "Medium", "Low"), |
| 578 | + test__engagement__product__tags__name=pt, |
| 579 | + test__engagement__product__in=prods, |
| 580 | + ).values( |
| 581 | + name=F("test__engagement__product__name"), |
| 582 | + ) |
| 583 | + top_ten = severity_count(top_ten, "annotate", "severity").order_by("-critical", "-high", "-medium", "-low")[:10] |
569 | 584 | else: |
570 | 585 | overall_in_pt = Finding.objects.filter(date__lt=end_date, |
571 | 586 | false_p=False, |
@@ -605,16 +620,21 @@ def product_tag_counts(request): |
605 | 620 | "reporter").order_by( |
606 | 621 | "numerical_severity") |
607 | 622 |
|
608 | | - top_ten = Product.objects.filter(engagement__test__finding__date__lte=end_date, |
609 | | - engagement__test__finding__false_p=False, |
610 | | - engagement__test__finding__duplicate=False, |
611 | | - engagement__test__finding__out_of_scope=False, |
612 | | - engagement__test__finding__mitigated__isnull=True, |
613 | | - engagement__test__finding__severity__in=( |
614 | | - "Critical", "High", "Medium", "Low"), |
615 | | - tags__name=pt, engagement__product__in=prods) |
616 | | - |
617 | | - top_ten = severity_count(top_ten, "annotate", "engagement__test__finding__severity").order_by("-critical", "-high", "-medium", "-low")[:10] |
| 623 | + top_ten = Finding.objects.filter( |
| 624 | + date__lte=end_date, |
| 625 | + false_p=False, |
| 626 | + duplicate=False, |
| 627 | + out_of_scope=False, |
| 628 | + mitigated__isnull=True, |
| 629 | + severity__in=("Critical", "High", "Medium", "Low"), |
| 630 | + test__engagement__product__tags__name=pt, |
| 631 | + test__engagement__product__in=prods, |
| 632 | + ).values( |
| 633 | + name=F("test__engagement__product__name"), |
| 634 | + ) |
| 635 | + top_ten = severity_count(top_ten, "annotate", "severity").order_by("-critical", "-high", "-medium", "-low")[:10] |
| 636 | + |
| 637 | + # top_ten already annotated above using Findings-based grouping |
618 | 638 |
|
619 | 639 | cip = {"S0": 0, |
620 | 640 | "S1": 0, |
|
0 commit comments