@@ -2872,65 +2872,52 @@ def latest_for_avids(self, avids):
28722872 return self .filter (avid__in = avids ).latest_per_avid ()
28732873
28742874 def latest_affecting_advisories_for_purl (self , purl ):
2875- affecting_exists = ImpactedPackageAffecting .objects .filter (
2876- impacted_package__advisory_id = OuterRef ("pk" ),
2877- package__package_url = purl ,
2878- )
2879-
2880- return (
2881- self .annotate (has_affecting = Exists (affecting_exists ))
2882- .filter (has_affecting = True )
2883- .latest_per_avid ()
2875+ adv_ids = ImpactedPackageAffecting .objects .filter (package__package_url = purl ).values_list (
2876+ "impacted_package__advisory_id" ,
2877+ flat = True ,
28842878 )
2879+ return self .filter (id__in = Subquery (adv_ids )).latest_per_avid ()
28852880
28862881 def latest_affecting_advisories_for_purls (self , purls ):
2887- affecting_exists = ImpactedPackageAffecting .objects .filter (
2888- impacted_package__advisory_id = OuterRef ("pk" ),
2889- package__package_url__in = purls ,
2890- )
2891-
2892- return (
2893- self .annotate (has_affecting = Exists (affecting_exists ))
2894- .filter (has_affecting = True )
2895- .latest_per_avid ()
2882+ adv_ids = ImpactedPackageAffecting .objects .filter (
2883+ package__package_url__in = purls
2884+ ).values_list (
2885+ "impacted_package__advisory_id" ,
2886+ flat = True ,
28962887 )
2888+ return self .filter (id__in = Subquery (adv_ids )).latest_per_avid ()
28972889
28982890 def latest_fixed_by_advisories_for_purl (self , purl ):
2899- fixed_exists = ImpactedPackageFixedBy .objects .filter (
2900- impacted_package__advisory_id = OuterRef ("pk" ),
2901- package__package_url = purl ,
2902- )
2903-
2904- return (
2905- self .annotate (has_fixed = Exists (fixed_exists )).filter (has_fixed = True ).latest_per_avid ()
2891+ adv_ids = ImpactedPackageFixedBy .objects .filter (package__package_url = purl ).values_list (
2892+ "impacted_package__advisory_id" ,
2893+ flat = True ,
29062894 )
2895+ return self .filter (id__in = Subquery (adv_ids )).latest_per_avid ()
29072896
29082897 def latest_fixed_by_advisories_for_purls (self , purls ):
2909- fixed_exists = ImpactedPackageFixedBy .objects .filter (
2910- impacted_package__advisory_id = OuterRef ( "pk" ) ,
2911- package__package_url__in = purls ,
2898+ adv_ids = ImpactedPackageFixedBy .objects .filter ( package__package_url__in = purls ). values_list (
2899+ " impacted_package__advisory_id" ,
2900+ flat = True ,
29122901 )
29132902
2914- return (
2915- self .annotate (has_fixed = Exists (fixed_exists )).filter (has_fixed = True ).latest_per_avid ()
2916- )
2903+ return self .filter (id__in = Subquery (adv_ids )).latest_per_avid ()
29172904
29182905 def latest_advisories_for_purls (self , purls ):
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 (
2906+ adv_ids = (
2907+ ImpactedPackageAffecting .objects .filter (package__package_url__in = purls )
2908+ .values_list (
29282909 "impacted_package__advisory_id" ,
29292910 flat = True ,
29302911 )
2912+ .union (
2913+ ImpactedPackageFixedBy .objects .filter (package__package_url__in = purls ).values_list (
2914+ "impacted_package__advisory_id" ,
2915+ flat = True ,
2916+ )
2917+ )
29312918 )
29322919
2933- qs = AdvisoryV2 . objects .filter (id__in = Subquery (adv_ids ))
2920+ qs = self .filter (id__in = Subquery (adv_ids ))
29342921 return qs .latest_per_avid ()
29352922
29362923
0 commit comments