diff options
author | Étienne Loks <etienne.loks@proxience.com> | 2013-07-15 17:15:11 +0000 |
---|---|---|
committer | Étienne Loks <etienne.loks@proxience.com> | 2013-07-15 17:15:11 +0000 |
commit | 9099b777f306a11f3750c6f1f49546ed5ed834de (patch) | |
tree | d600e95d258ec7866968cb6a59f5379aca6085f3 | |
parent | 5a31bc9a9e6f3ae10b4b590ae59f4b35acde21df (diff) | |
parent | b0db4ae085efd4d64379ba738d27a060126b3753 (diff) | |
download | Ishtar-9099b777f306a11f3750c6f1f49546ed5ed834de.tar.bz2 Ishtar-9099b777f306a11f3750c6f1f49546ed5ed834de.zip |
Merge branch 'master' of lysithea.proxience.net:/home/proxience/git/ishtar
-rw-r--r-- | archaeological_operations/import_from_csv.py | 37 |
1 files changed, 22 insertions, 15 deletions
diff --git a/archaeological_operations/import_from_csv.py b/archaeological_operations/import_from_csv.py index 790f0e078..3f29bcb95 100644 --- a/archaeological_operations/import_from_csv.py +++ b/archaeological_operations/import_from_csv.py @@ -330,12 +330,12 @@ def parse_person(surname, name, old_ref, owner): p = Person.objects.create(**defaults) return p -def parse_comment_addr_nature(addr, nature, owner): +def parse_comment_addr_nature(nature, addr, owner): addr = parse_string(addr) nature = parse_string(nature) comments = [] if nature: - comments += [u"Amanégement :", nature] + comments += [u"Aménagement :", nature] if addr: comments += [u"Adresse :", addr] if not comments: @@ -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', |