@@ -867,34 +867,27 @@ def apply_reachability_to_packages_and_dependencies(project, advisory_report):
867867 Update DiscoveredPackage and DiscoveredDependency records by injecting the
868868 computed reachability data into their affected_by_vulnerabilities JSON field.
869869 """
870- advisories_list = advisory_report .get ("advisories" , [])
871- if not advisories_list :
870+ advisories = advisory_report .get ("advisories" , [])
871+ if not advisories :
872872 return
873873
874- advisory_map = {adv ["advisory_uid" ]: adv for adv in advisories_list }
875-
876- unsaved_packages = []
877- for package in project .discoveredpackages .all ():
878- vulns = package .affected_by_vulnerabilities or []
879- if inject_reachability_data (vulns , advisory_map ):
880- unsaved_packages .append (package )
881-
882- if unsaved_packages :
883- DiscoveredPackage .objects .bulk_update (
884- objs = unsaved_packages ,
885- fields = ["affected_by_vulnerabilities" ],
886- batch_size = 10 ,
887- )
888-
889- unsaved_deps = []
890- for dep in project .discovereddependencies .all ():
891- vulns = dep .affected_by_vulnerabilities or []
892- if inject_reachability_data (vulns , advisory_map ):
893- unsaved_deps .append (dep )
894-
895- if unsaved_deps :
896- DiscoveredDependency .objects .bulk_update (
897- objs = unsaved_deps ,
898- fields = ["affected_by_vulnerabilities" ],
899- batch_size = 10 ,
900- )
874+ advisory_map = {adv ["advisory_uid" ]: adv for adv in advisories }
875+ targets = (
876+ (project .discoveredpackages .all (), DiscoveredPackage ),
877+ (project .discovereddependencies .all (), DiscoveredDependency ),
878+ )
879+
880+ for queryset , model in targets :
881+ unsaved = [
882+ item
883+ for item in queryset
884+ if inject_reachability_data (
885+ item .affected_by_vulnerabilities or [], advisory_map
886+ )
887+ ]
888+ if unsaved :
889+ model .objects .bulk_update (
890+ objs = unsaved ,
891+ fields = ["affected_by_vulnerabilities" ],
892+ batch_size = 10 ,
893+ )
0 commit comments