Skip to content

Commit 67b57a3

Browse files
committed
Fix duplicate "fixed by" packages in PackageDetails view
Resolves #1907 Added deduplication logic using seen_packages dictionary to prevent duplicate entries when multiple ImpactedPackage records reference the same fixing package. Signed-off-by: Mrityunjay Raj <mr.raj.earth@gmail.com>
1 parent a8aa6da commit 67b57a3

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

vulnerabilities/views.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,7 @@ def get_fixed_package_details(self, package):
221221
advisory_by_avid = {adv.avid: adv for adv in latest_advisories}
222222

223223
fixed_pkg_details = {}
224+
seen_packages = {} # Track seen package IDs per avid to avoid duplicates
224225

225226
for impact in affected_impacts:
226227
avid = impact.advisory.avid
@@ -229,15 +230,16 @@ def get_fixed_package_details(self, package):
229230
continue
230231
if avid not in fixed_pkg_details:
231232
fixed_pkg_details[avid] = []
232-
fixed_pkg_details[avid].extend(
233-
[
234-
{
235-
"pkg": pkg,
236-
"affected_count": pkg.affected_in_impacts.count(),
237-
}
238-
for pkg in impact.fixed_by_packages.all()
239-
]
240-
)
233+
seen_packages[avid] = set()
234+
for pkg in impact.fixed_by_packages.all():
235+
if pkg.id not in seen_packages[avid]:
236+
seen_packages[avid].add(pkg.id)
237+
fixed_pkg_details[avid].append(
238+
{
239+
"pkg": pkg,
240+
"affected_count": pkg.affected_in_impacts.count(),
241+
}
242+
)
241243

242244
affected_by_advisories = {
243245
advisory_by_avid[avid] for avid in affected_avids if avid in advisory_by_avid

0 commit comments

Comments
 (0)