@@ -180,6 +180,7 @@ def update_or_create_package(project, package_data, codebase_resources=None):
180180 package_data = _clean_package_data (package_data )
181181 # No values for package_uid requires to be empty string for proper queryset lookup
182182 package_uid = package_data .get ("package_uid" ) or ""
183+ datasource_id = package_data .get ("datasource_id" ) or ""
183184
184185 package = DiscoveredPackage .objects .get_or_none (
185186 project = project ,
@@ -192,8 +193,14 @@ def update_or_create_package(project, package_data, codebase_resources=None):
192193 else :
193194 package = DiscoveredPackage .create_from_data (project , package_data )
194195
195- if package and codebase_resources :
196- package .add_resources (codebase_resources )
196+ if package :
197+ if datasource_id and datasource_id not in package .datasource_ids :
198+ datasource_ids = package .datasource_ids .copy ()
199+ datasource_ids .append (datasource_id )
200+ package .update (datasource_ids = datasource_ids )
201+
202+ if codebase_resources :
203+ package .add_resources (codebase_resources )
197204
198205 return package
199206
@@ -210,7 +217,12 @@ def create_local_files_package(project, defaults, codebase_resources=None):
210217
211218
212219def update_or_create_dependency (
213- project , dependency_data , for_package = None , strip_datafile_path_root = False
220+ project ,
221+ dependency_data ,
222+ for_package = None ,
223+ datafile_resource = None ,
224+ datasource_id = None ,
225+ strip_datafile_path_root = False ,
214226):
215227 """
216228 Get, update or create a DiscoveredDependency then returns it.
@@ -241,6 +253,8 @@ def update_or_create_dependency(
241253 project ,
242254 dependency_data ,
243255 for_package = for_package ,
256+ datafile_resource = datafile_resource ,
257+ datasource_id = datasource_id ,
244258 strip_datafile_path_root = strip_datafile_path_root ,
245259 )
246260
0 commit comments