@@ -849,34 +849,27 @@ def apply_reachability_to_packages_and_dependencies(project, advisory_report):
849849 Update DiscoveredPackage and DiscoveredDependency records by injecting the
850850 computed reachability data into their affected_by_vulnerabilities JSON field.
851851 """
852- advisories_list = advisory_report .get ("advisories" , [])
853- if not advisories_list :
852+ advisories = advisory_report .get ("advisories" , [])
853+ if not advisories :
854854 return
855855
856- advisory_map = {adv ["advisory_uid" ]: adv for adv in advisories_list }
857-
858- unsaved_packages = []
859- for package in project .discoveredpackages .all ():
860- vulns = package .affected_by_vulnerabilities or []
861- if inject_reachability_data (vulns , advisory_map ):
862- unsaved_packages .append (package )
863-
864- if unsaved_packages :
865- DiscoveredPackage .objects .bulk_update (
866- objs = unsaved_packages ,
867- fields = ["affected_by_vulnerabilities" ],
868- batch_size = 10 ,
869- )
870-
871- unsaved_deps = []
872- for dep in project .discovereddependencies .all ():
873- vulns = dep .affected_by_vulnerabilities or []
874- if inject_reachability_data (vulns , advisory_map ):
875- unsaved_deps .append (dep )
876-
877- if unsaved_deps :
878- DiscoveredDependency .objects .bulk_update (
879- objs = unsaved_deps ,
880- fields = ["affected_by_vulnerabilities" ],
881- batch_size = 10 ,
882- )
856+ advisory_map = {adv ["advisory_uid" ]: adv for adv in advisories }
857+ targets = (
858+ (project .discoveredpackages .all (), DiscoveredPackage ),
859+ (project .discovereddependencies .all (), DiscoveredDependency ),
860+ )
861+
862+ for queryset , model in targets :
863+ unsaved = [
864+ item
865+ for item in queryset
866+ if inject_reachability_data (
867+ item .affected_by_vulnerabilities or [], advisory_map
868+ )
869+ ]
870+ if unsaved :
871+ model .objects .bulk_update (
872+ objs = unsaved ,
873+ fields = ["affected_by_vulnerabilities" ],
874+ batch_size = 10 ,
875+ )
0 commit comments