Skip to content

Commit a0c0e33

Browse files
committed
Use queries for SSVC
Signed-off-by: Tushar Goel <tushar.goel.dav@gmail.com>
1 parent 1cb8890 commit a0c0e33

1 file changed

Lines changed: 14 additions & 17 deletions

File tree

vulnerabilities/api_v3.py

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,14 @@
1010
from collections import defaultdict
1111
from urllib.parse import urlencode
1212

13+
from django.contrib.postgres.aggregates import JSONBAgg
1314
from django.db.models import Exists
15+
from django.db.models import F
1416
from django.db.models import Max
1517
from django.db.models import OuterRef
1618
from django.db.models import Prefetch
1719
from django.db.models import Q
20+
from django.db.models.functions import JSONObject
1821
from django_filters import rest_framework as filters
1922
from drf_spectacular.utils import extend_schema
2023
from packageurl import PackageURL
@@ -659,6 +662,16 @@ def get_affected_advisories_bulk(packages):
659662
max_exploitability=Max(
660663
"members__advisory__exploitability",
661664
),
665+
ssvc_trees=JSONBAgg(
666+
JSONObject(
667+
vector=F("members__advisory__related_ssvcs__vector"),
668+
decision=F("members__advisory__related_ssvcs__decision"),
669+
options=F("members__advisory__related_ssvcs__options"),
670+
source_url=F("members__advisory__related_ssvcs__source_advisory__url"),
671+
),
672+
filter=Q(members__advisory__related_ssvcs__decision__isnull=False),
673+
distinct=True,
674+
),
662675
)
663676
.only(
664677
"id",
@@ -695,22 +708,6 @@ def get_affected_advisories_bulk(packages):
695708
identifier = primary.advisory_id.split("/")[-1]
696709

697710
aliases = [a for a in adv._aliases_cache if a != identifier]
698-
all_ssvc = []
699-
700-
for member in adv.members.all():
701-
all_ssvc.extend(member.advisory.prefetched_ssvc_trees)
702-
703-
ssvcs = []
704-
705-
for ssvc in all_ssvc:
706-
ssvcs.append(
707-
{
708-
"vector": ssvc.vector,
709-
"decision": ssvc.decision,
710-
"options": ssvc.options,
711-
"source_url": ssvc.source_advisory.url,
712-
}
713-
)
714711

715712
grouped.append(
716713
{
@@ -722,7 +719,7 @@ def get_affected_advisories_bulk(packages):
722719
"risk_score": risk_score,
723720
"summary": primary.summary,
724721
"resource_url": primary.get_absolute_url(),
725-
"ssvc_trees": ssvcs,
722+
"ssvc_trees": adv.ssvc_trees,
726723
}
727724
)
728725

0 commit comments

Comments
 (0)