summaryrefslogtreecommitdiff
path: root/archaeological_operations/import_from_csv.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_operations/import_from_csv.py')
-rw-r--r--archaeological_operations/import_from_csv.py33
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',