@@ -2915,33 +2915,24 @@ def latest_fixed_by_advisories_for_purls(self, purls):
29152915 self .annotate (has_fixed = Exists (fixed_exists )).filter (has_fixed = True ).latest_per_avid ()
29162916 )
29172917
2918- def latest_advisories_for_purl (self , purl ):
2919- return self .filter (
2920- Q (impacted_packages__affecting_packages__package_url = purl )
2921- | Q (impacted_packages__fixed_by_packages__package_url = purl )
2922- ).latest_per_avid ()
2923-
29242918 def latest_advisories_for_purls (self , purls ):
2925-
2926- affecting = ImpactedPackageAffecting .objects .filter (
2927- impacted_package__advisory_id = OuterRef ("pk" ),
2928- package__package_url__in = purls ,
2929- )
2930-
2931- fixed = ImpactedPackageFixedBy .objects .filter (
2932- impacted_package__advisory_id = OuterRef ("pk" ),
2933- package__package_url__in = purls ,
2934- )
2935-
2936- return (
2937- self .annotate (
2938- has_affecting = Exists (affecting ),
2939- has_fixed = Exists (fixed ),
2919+ adv_ids = ImpactedPackageAffecting .objects .filter (
2920+ package__package_url__in = purls
2921+ ).values_list (
2922+ "impacted_package__advisory_id" ,
2923+ flat = True ,
2924+ ).union (
2925+ ImpactedPackageFixedBy .objects .filter (
2926+ package__package_url__in = purls
2927+ ).values_list (
2928+ "impacted_package__advisory_id" ,
2929+ flat = True ,
29402930 )
2941- .filter (Q (has_affecting = True ) | Q (has_fixed = True ))
2942- .latest_per_avid ()
29432931 )
29442932
2933+ qs = AdvisoryV2 .objects .filter (id__in = Subquery (adv_ids ))
2934+ return qs .latest_per_avid ()
2935+
29452936
29462937class AdvisoryV2 (models .Model ):
29472938 """
0 commit comments