diff options
Diffstat (limited to 'archaeological_operations/import_from_csv.py')
-rw-r--r-- | archaeological_operations/import_from_csv.py | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/archaeological_operations/import_from_csv.py b/archaeological_operations/import_from_csv.py index e2d77dbf3..3f29bcb95 100644 --- a/archaeological_operations/import_from_csv.py +++ b/archaeological_operations/import_from_csv.py @@ -552,13 +552,20 @@ class RelatedClass: unique_data = {} for k in self.unique_keys: unique_data[k] = data.pop(k) - if self.cls.objects.filter(**unique_data).count() > 1: - return None - unique_data['defaults'] = data - try: - obj, created = self.cls.objects.get_or_create(**unique_data) - except ValueError: - return None + created = False + filtr = unique_data.copy() + q = None + # check if all condition have a value + if not [k for k in filtr if not filtr[k]]: + q = self.cls.objects.filter(**unique_data) + if q and q.count() > 1: + obj = q.all()[0] + else: + unique_data['defaults'] = data + try: + obj, created = self.cls.objects.get_or_create(**unique_data) + except ValueError: + return None if not created: for k in unique_data['defaults']: try: @@ -608,12 +615,12 @@ def import_operations_csv(values, col_defs=OPE_COLS, update=True, person=None, }, reverse_key='operation', unique_keys=['ref_sra']), - RelatedClass('associated_file', File, - extra_data=['year'], - default_data={'history_modifier':default_person, - 'file_type':FileType.objects.get( - txt_idx='undefined')}, - unique_keys=['internal_reference']), + #RelatedClass('associated_file', File, + # extra_data=['year'], + # default_data={'history_modifier':default_person, + # 'file_type':FileType.objects.get( + # txt_idx='undefined')}, + # unique_keys=['internal_reference', 'year']), RelatedClass('source', OperationSource, reverse_key='operation', unique_keys=['index']), RelatedClass('parcels', Parcel, reverse_key='operation', |