Skip to content

Commit 0839d67

Browse files
committed
All vulnerable packages API
Signed-off-by: Tushar Goel <tushar.goel.dav@gmail.com>
1 parent a0bcd95 commit 0839d67

File tree

1 file changed

+6
-12
lines changed

1 file changed

+6
-12
lines changed

vulnerabilities/api_v3.py

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99

1010
from urllib.parse import urlencode
1111

12+
from django.db.models import Exists
13+
from django.db.models import OuterRef
1214
from django.db.models import Prefetch
1315
from django_filters import rest_framework as filters
1416
from packageurl import PackageURL
@@ -21,6 +23,7 @@
2123
from vulnerabilities.models import AdvisorySeverity
2224
from vulnerabilities.models import AdvisoryV2
2325
from vulnerabilities.models import AdvisoryWeakness
26+
from vulnerabilities.models import ImpactedPackageAffecting
2427
from vulnerabilities.models import PackageV2
2528
from vulnerabilities.throttling import PermissionBasedUserRateThrottle
2629
from vulnerabilities.utils import group_advisories_by_content
@@ -290,20 +293,11 @@ def create(self, request, *args, **kwargs):
290293
approximate = serializer.validated_data["approximate"]
291294

292295
if not purls:
293-
pkg_ids = (
294-
PackageV2.objects.vulnerable().values_list("id", flat=True)
295-
# .distinct()
296-
)
296+
impacted = ImpactedPackageAffecting.objects.filter(package_id=OuterRef("id"))
297297

298-
# vulnerable_purls = (
299-
# PackageV2.objects.vulnerable()
300-
# .only("package_url")
301-
# .values_list("package_url", flat=True)
302-
# .distinct()
303-
# .order_by("package_url")
304-
# )
305298
query = (
306-
PackageV2.objects.filter(id__in=pkg_ids)
299+
PackageV2.objects.annotate(has_vuln=Exists(impacted))
300+
.filter(has_vuln=True)
307301
.values_list("package_url", flat=True)
308302
.order_by("package_url")
309303
)

0 commit comments

Comments
 (0)