Skip to content

Commit 88dc18c

Browse files
committed
Optimize advisoryqueyset
Signed-off-by: Tushar Goel <tushar.goel.dav@gmail.com>
1 parent 0839d67 commit 88dc18c

File tree

1 file changed

+14
-23
lines changed

1 file changed

+14
-23
lines changed

vulnerabilities/models.py

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -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

29462937
class AdvisoryV2(models.Model):
29472938
"""

0 commit comments

Comments
 (0)