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

Function get_fixing_advisories_bulk

vulnerabilities/api_v3.py:891–1006  ·  view source on GitHub ↗
(packages, max_advisories, base_url)

Source from the content-addressed store, hash-verified

889
890
891def get_fixing_advisories_bulk(packages, max_advisories, base_url):
892 package_ids = []
893 package_ids_with_multiple_importers = []
894 packages_without_multiple_importers = []
895
896 for p in packages:
897 package_ids.append(p.id)
898
899 if p.type in TYPES_WITH_MULTIPLE_IMPORTERS:
900 package_ids_with_multiple_importers.append(p.id)
901 else:
902 packages_without_multiple_importers.append(p)
903
904 advisory_sets = list(
905 AdvisorySet.objects.filter(
906 package_id__in=package_ids_with_multiple_importers,
907 relation_type="fixing",
908 )
909 .select_related("primary_advisory")
910 .only(
911 "id",
912 "package_id",
913 "primary_advisory__advisory_id",
914 )
915 )
916
917 package_map = defaultdict(list)
918
919 for adv in advisory_sets:
920 package_map[adv.package_id].append(adv.primary_advisory)
921
922 result = {}
923
924 for package in packages:
925 groups = package_map.get(package.id, [])
926 grouped = []
927
928 for advisory in groups:
929 resource_url = None
930 advisory_url = advisory.get_absolute_url()
931
932 if base_url and advisory_url:
933 resource_url = f"{base_url}{advisory_url}"
934 grouped.append(
935 {
936 "advisory_id": advisory.advisory_id.split("/")[-1],
937 "resource_url": resource_url,
938 "advisory_uid": advisory.avid,
939 }
940 )
941
942 result[package.id] = grouped
943
944 packages = list(packages_without_multiple_importers)
945
946 if not packages:
947 return result
948

Callers 1

createMethod · 0.85

Calls 3

getMethod · 0.45
get_absolute_urlMethod · 0.45

Tested by

no test coverage detected