MCPcopy Create free account
hub / github.com/aboutcode-org/vulnerablecode / get_affected_advisories_bulk

Function get_affected_advisories_bulk

vulnerabilities/api_v3.py:566–888  ·  view source on GitHub ↗
(packages, max_advisories, base_url, reachability=False)

Source from the content-addressed store, hash-verified

564
565
566def get_affected_advisories_bulk(packages, max_advisories, base_url, reachability=False):
567 package_ids = []
568 package_ids_with_multiple_importers = []
569 packages_without_multiple_importers = []
570
571 for p in packages:
572 package_ids.append(p.id)
573
574 if p.type in TYPES_WITH_MULTIPLE_IMPORTERS:
575 package_ids_with_multiple_importers.append(p.id)
576 else:
577 packages_without_multiple_importers.append(p)
578
579 result = {}
580
581 impacts = (
582 ImpactedPackageAffecting.objects.filter(
583 package_id__in=package_ids,
584 impacted_package__advisory__is_latest=True,
585 impacted_package__advisory___all_impacts_unfurled_at__isnull=False,
586 )
587 .values(
588 "package_id",
589 "impacted_package__advisory_id",
590 )
591 .annotate(
592 fixed_by_packages=ArrayAgg(
593 "impacted_package__fixed_by_packages__package_url",
594 distinct=True,
595 filter=Q(impacted_package__fixed_by_packages__package_url__isnull=False),
596 )
597 )
598 )
599
600 impact_by_package_and_advisory = {
601 (
602 row["package_id"],
603 row["impacted_package__advisory_id"],
604 ): row["fixed_by_packages"]
605 or []
606 for row in impacts
607 }
608
609 # Package types with multiple importers
610
611 advisory_sets = list(
612 AdvisorySet.objects.filter(
613 package_id__in=package_ids_with_multiple_importers,
614 relation_type="affecting",
615 )
616 .select_related("primary_advisory")
617 .prefetch_related(
618 Prefetch(
619 "aliases",
620 queryset=AdvisoryAlias.objects.only("alias"),
621 ),
622 )
623 .annotate(

Callers 1

createMethod · 0.85

Calls 7

get_patches_bulkFunction · 0.85
build_patch_set_mapFunction · 0.85
addMethod · 0.80
allMethod · 0.45
getMethod · 0.45
get_absolute_urlMethod · 0.45

Tested by

no test coverage detected