Skip to content

Commit 52e36cf

Browse files
Merge pull request DefectDojo#1807 from valentijnscholten/similar_with_dedupe_on_engagement
Make Similar findings play nice with dedupe on engagement
2 parents 89aa6f9 + 3a9f202 commit 52e36cf

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

dojo/finding/views.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2121,6 +2121,11 @@ def get_missing_mandatory_notetypes(finding):
21212121
def mark_finding_duplicate(request, original_id, duplicate_id):
21222122
original = get_object_or_404(Finding, id=original_id)
21232123
duplicate = get_object_or_404(Finding, id=duplicate_id)
2124+
2125+
if original.test.engagement != duplicate.test.engagement:
2126+
if original.test.engagement.deduplication_on_engagement or duplicate.test.engagement.deduplication_on_engagement:
2127+
raise ValueError('Marking finding {} as duplicate of {} failed as they are not in the same engagement and deduplication_on_engagement is enabled for at least one of them')
2128+
21242129
duplicate.duplicate = True
21252130
duplicate.active = False
21262131
duplicate.verified = False

dojo/models.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1326,7 +1326,13 @@ class Meta:
13261326

13271327
@property
13281328
def similar_findings(self):
1329-
filtered = Finding.objects.filter(test__engagement__product=self.test.engagement.product)
1329+
filtered = Finding.objects.all()
1330+
1331+
if self.test.engagement.deduplication_on_engagement:
1332+
filtered = filtered.filter(test__engagement=self.test.engagement)
1333+
else:
1334+
filtered = filtered.filter(test__engagement__product=self.test.engagement.product)
1335+
13301336
if self.cve:
13311337
filtered = filtered.filter(cve=self.cve)
13321338
if self.cwe:
@@ -1335,6 +1341,7 @@ def similar_findings(self):
13351341
filtered = filtered.filter(file_path=self.file_path)
13361342
if self.line:
13371343
filtered = filtered.filter(line=self.line)
1344+
13381345
return filtered.exclude(pk=self.pk)[:10]
13391346

13401347
def compute_hash_code(self):

0 commit comments

Comments
 (0)