@@ -353,9 +353,29 @@ def import_file(self, entity_name, path, file_name, index_params, do_patch=False
353353 service = superdesk .get_resource_service (entity_name )
354354 json_data = json .loads (app_prepopulation .read ())
355355 data = [fillEnvironmentVariables (item ) for item in json_data ]
356- data = [app .data .mongo ._mongotize (item , service .datasource ) for item in data if item ]
357- existing_data = []
356+ deleted_ids = [item ["_id" ] for item in data if item and item .get ("_deleted" ) and item .get ("_id" )]
357+ data = [item for item in data if item and not item .get ("_deleted" )]
358+ data = [app .data .mongo ._mongotize (item , service .datasource ) for item in data ]
359+
360+ if deleted_ids :
361+ delete_lookup = {"_id" : {"$in" : deleted_ids }}
362+ delete_lookup = app .data .mongo ._mongotize (delete_lookup , service .datasource )
363+ deleted_result = service .delete (delete_lookup )
364+ deleted_id_set = set ()
365+ for item in deleted_result or []:
366+ if isinstance (item , dict ) and "_id" in item :
367+ deleted_id_set .add (str (item ["_id" ]))
368+ else :
369+ deleted_id_set .add (str (item ))
370+
371+ for deleted_id in deleted_ids :
372+ if str (deleted_id ) in deleted_id_set :
373+ logger .info (" - deleted tombstone record: %s" , deleted_id )
374+ else :
375+ logger .info (" - record marked for deletion already missing: %s" , deleted_id )
376+
358377 existing = service .get_from_mongo (None , {})
378+ existing_data = []
359379 update_data = True
360380 if not do_patch and existing .count () > 0 :
361381 logger .info (" - data already exists none will be loaded" )
0 commit comments