Skip to content

Commit 6296df8

Browse files
committed
Add 'Mitigation Available' filter to ApiFindingFilter and ReportFindingFilterHelper
1 parent 3adf4cd commit 6296df8

1 file changed

Lines changed: 19 additions & 0 deletions

File tree

dojo/filters.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1625,6 +1625,7 @@ class ApiFindingFilter(DojoFilter):
16251625
verified = BooleanFilter(field_name="verified")
16261626
has_jira = BooleanFilter(field_name="jira_issue", lookup_expr="isnull", exclude=True)
16271627
fix_available = BooleanFilter(field_name="fix_available")
1628+
mitigation_available = BooleanFilter(method="filter_mitigation_available", label="Mitigation Available")
16281629
# CharFilter
16291630
component_version = CharFilter(lookup_expr="icontains")
16301631
component_name = CharFilter(lookup_expr="icontains")
@@ -1797,6 +1798,11 @@ def filter_mitigated_on(self, queryset, name, value):
17971798

17981799
return queryset.filter(mitigated=value)
17991800

1801+
def filter_mitigation_available(self, queryset, name, value):
1802+
if value:
1803+
return queryset.exclude(mitigation__isnull=True).exclude(mitigation__exact="")
1804+
return queryset.filter(Q(mitigation__isnull=True) | Q(mitigation__exact=""))
1805+
18001806

18011807
class PercentageFilter(NumberFilter):
18021808
def __init__(self, *args, **kwargs):
@@ -1831,6 +1837,8 @@ class FindingFilterHelper(FilterSet):
18311837
duplicate = ReportBooleanFilter()
18321838
is_mitigated = ReportBooleanFilter()
18331839
fix_available = ReportBooleanFilter()
1840+
mitigation = CharFilter(lookup_expr="icontains")
1841+
mitigation_available = BooleanFilter(method="filter_mitigation_available", label="Mitigation Available")
18341842
mitigated = DateRangeFilter(field_name="mitigated", label="Mitigated Date")
18351843
mitigated_on = DateTimeFilter(field_name="mitigated", lookup_expr="exact", label="Mitigated On", method="filter_mitigated_on")
18361844
mitigated_before = DateTimeFilter(field_name="mitigated", lookup_expr="lt", label="Mitigated Before")
@@ -2020,6 +2028,11 @@ def filter_mitigated_on(self, queryset, name, value):
20202028

20212029
return queryset.filter(mitigated=value)
20222030

2031+
def filter_mitigation_available(self, queryset, name, value):
2032+
if value:
2033+
return queryset.exclude(mitigation__isnull=True).exclude(mitigation__exact="")
2034+
return queryset.filter(Q(mitigation__isnull=True) | Q(mitigation__exact=""))
2035+
20232036

20242037
def get_finding_group_queryset_for_context(pid=None, eid=None, tid=None):
20252038
"""
@@ -3399,6 +3412,7 @@ class ReportFindingFilterHelper(FilterSet):
33993412
out_of_scope = ReportBooleanFilter()
34003413
outside_of_sla = FindingSLAFilter(label="Outside of SLA")
34013414
file_path = CharFilter(lookup_expr="icontains")
3415+
mitigation_available = BooleanFilter(method="filter_mitigation_available", label="Mitigation Available")
34023416

34033417
o = OrderingFilter(
34043418
fields=(
@@ -3421,6 +3435,11 @@ class Meta:
34213435
"numerical_severity", "reporter", "last_reviewed",
34223436
"jira_creation", "jira_change", "files"]
34233437

3438+
def filter_mitigation_available(self, queryset, name, value):
3439+
if value:
3440+
return queryset.exclude(mitigation__isnull=True).exclude(mitigation__exact="")
3441+
return queryset.filter(Q(mitigation__isnull=True) | Q(mitigation__exact=""))
3442+
34243443
def manage_kwargs(self, kwargs):
34253444
self.prod_type = None
34263445
self.product = None

0 commit comments

Comments
 (0)