Merge pull request #2682 from djstini/fix-import

open-data-import further duplicate handling
This commit is contained in:
vabene1111
2023-11-27 19:56:19 +01:00
committed by GitHub

View File

@@ -117,18 +117,24 @@ class OpenDataImporter:
self._update_slug_cache(PropertyType, 'property') self._update_slug_cache(PropertyType, 'property')
insert_list = [] insert_list = []
insert_list_flat = []
update_list = [] update_list = []
update_field_list = [] update_field_list = []
for k in list(self.data[datatype].keys()): for k in list(self.data[datatype].keys()):
if not (self.data[datatype][k]['name'] in existing_objects_flat or self.data[datatype][k]['plural_name'] in existing_objects_flat): if not (self.data[datatype][k]['name'] in existing_objects_flat or self.data[datatype][k]['plural_name'] in existing_objects_flat):
insert_list.append({'data': { if not (self.data[datatype][k]['name'] in insert_list_flat or self.data[datatype][k]['plural_name'] in insert_list_flat):
'name': self.data[datatype][k]['name'], insert_list.append({'data': {
'plural_name': self.data[datatype][k]['plural_name'] if self.data[datatype][k]['plural_name'] != '' else None, 'name': self.data[datatype][k]['name'],
'supermarket_category_id': self.slug_id_cache['category'][self.data[datatype][k]['store_category']], 'plural_name': self.data[datatype][k]['plural_name'] if self.data[datatype][k]['plural_name'] != '' else None,
'fdc_id': self.data[datatype][k]['fdc_id'] if self.data[datatype][k]['fdc_id'] != '' else None, 'supermarket_category_id': self.slug_id_cache['category'][self.data[datatype][k]['store_category']],
'open_data_slug': k, 'fdc_id': self.data[datatype][k]['fdc_id'] if self.data[datatype][k]['fdc_id'] != '' else None,
'space': self.request.space.id, 'open_data_slug': k,
}}) 'space': self.request.space.id,
}})
# build a fake second flat array to prevent duplicate foods from being inserted.
# trying to insert a duplicate would throw a db error :(
insert_list_flat.append(self.data[datatype][k]['name'])
insert_list_flat.append(self.data[datatype][k]['plural_name'])
else: else:
if self.data[datatype][k]['name'] in existing_objects: if self.data[datatype][k]['name'] in existing_objects:
existing_food_id = existing_objects[self.data[datatype][k]['name']][0] existing_food_id = existing_objects[self.data[datatype][k]['name']][0]