From 67b57a31c5aeee0141b2437e781ddfc2b7bb73b0 Mon Sep 17 00:00:00 2001 From: Mrityunjay Raj Date: Thu, 1 Jan 2026 13:44:43 +0530 Subject: [PATCH] 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 --- vulnerabilities/views.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/vulnerabilities/views.py b/vulnerabilities/views.py index 8a867983e..27e942f16 100644 --- a/vulnerabilities/views.py +++ b/vulnerabilities/views.py @@ -221,6 +221,7 @@ def get_fixed_package_details(self, package): advisory_by_avid = {adv.avid: adv for adv in latest_advisories} fixed_pkg_details = {} + seen_packages = {} # Track seen package IDs per avid to avoid duplicates for impact in affected_impacts: avid = impact.advisory.avid @@ -229,15 +230,16 @@ def get_fixed_package_details(self, package): continue if avid not in fixed_pkg_details: fixed_pkg_details[avid] = [] - fixed_pkg_details[avid].extend( - [ - { - "pkg": pkg, - "affected_count": pkg.affected_in_impacts.count(), - } - for pkg in impact.fixed_by_packages.all() - ] - ) + seen_packages[avid] = set() + for pkg in impact.fixed_by_packages.all(): + if pkg.id not in seen_packages[avid]: + seen_packages[avid].add(pkg.id) + fixed_pkg_details[avid].append( + { + "pkg": pkg, + "affected_count": pkg.affected_in_impacts.count(), + } + ) affected_by_advisories = { advisory_by_avid[avid] for avid in affected_avids if avid in advisory_by_avid