Skip to content

Commit 89cb9e0

Browse files
make filtering faster
1 parent 045ad95 commit 89cb9e0

File tree

1 file changed

+14
-23
lines changed

1 file changed

+14
-23
lines changed

dojo/filters.py

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -381,11 +381,9 @@ def __init__(self, *args, **kwargs):
381381
if finding.cwe > 0 and finding.cwe not in cwe)
382382
cwe = collections.OrderedDict(sorted(cwe.items()))
383383
self.form.fields['cwe'].choices = cwe.items()
384-
sevs = dict()
385-
sevs = dict([finding.severity, finding.severity]
386-
for finding in self.queryset.distinct()
387-
if finding.severity not in sevs)
388-
self.form.fields['severity'].choices = sevs.items()
384+
self.form.fields['severity'].choices = self.queryset.order_by(
385+
'numerical_severity'
386+
).values_list('severity', 'severity').distinct()
389387
if self.user is not None and not self.user.is_staff:
390388
if self.form.fields.get('test__engagement__product'):
391389
qs = Product.objects.filter(authorized_users__in=[self.user])
@@ -462,11 +460,9 @@ def __init__(self, *args, **kwargs):
462460
if finding.cwe > 0 and finding.cwe not in cwe)
463461
cwe = collections.OrderedDict(sorted(cwe.items()))
464462
self.form.fields['cwe'].choices = cwe.items()
465-
sevs = dict()
466-
sevs = dict([finding.severity, finding.severity]
467-
for finding in self.queryset.distinct()
468-
if finding.severity not in sevs)
469-
self.form.fields['severity'].choices = sevs.items()
463+
self.form.fields['severity'].choices = self.queryset.order_by(
464+
'numerical_severity'
465+
).values_list('severity', 'severity').distinct()
470466

471467

472468
class ClosedFingingSuperFilter(ClosedFindingFilter):
@@ -532,12 +528,9 @@ def __init__(self, *args, **kwargs):
532528
for finding in self.queryset.distinct()
533529
if finding.cwe > 0 and finding.cwe not in cwe)
534530
cwe = collections.OrderedDict(sorted(cwe.items()))
535-
self.form.fields['cwe'].choices = cwe.items()
536-
sevs = dict()
537-
sevs = dict([finding.severity, finding.severity]
538-
for finding in self.queryset.distinct()
539-
if finding.severity not in sevs)
540-
self.form.fields['severity'].choices = sevs.items()
531+
self.form.fields['severity'].choices = self.queryset.order_by(
532+
'numerical_severity'
533+
).values_list('severity', 'severity').distinct()
541534

542535

543536
class AcceptedFingingSuperFilter(AcceptedFindingFilter):
@@ -597,11 +590,9 @@ def __init__(self, *args, **kwargs):
597590
if finding.cwe > 0 and finding.cwe not in cwe)
598591
cwe = collections.OrderedDict(sorted(cwe.items()))
599592
self.form.fields['cwe'].choices = cwe.items()
600-
sevs = dict()
601-
sevs = dict([finding.severity, finding.severity]
602-
for finding in self.queryset.distinct()
603-
if finding.severity not in sevs)
604-
self.form.fields['severity'].choices = sevs.items()
593+
self.form.fields['severity'].choices = self.queryset.order_by(
594+
'numerical_severity'
595+
).values_list('severity', 'severity').distinct()
605596

606597

607598
class TemplateFindingFilter(DojoFilter):
@@ -707,8 +698,8 @@ class MetricsFindingFilter(FilterSet):
707698
def __init__(self, *args, **kwargs):
708699
super(MetricsFindingFilter, self).__init__(*args, **kwargs)
709700
self.form.fields['severity'].choices = self.queryset.order_by(
710-
'numerical_severity') \
711-
.values_list('severity', 'severity').distinct()
701+
'numerical_severity'
702+
).values_list('severity', 'severity').distinct()
712703

713704
class Meta:
714705
model = Finding

0 commit comments

Comments
 (0)