diff options
author | Étienne Loks <etienne.loks@proxience.com> | 2015-06-17 03:15:46 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@proxience.com> | 2015-06-17 03:20:59 +0200 |
commit | 8a7b2bbf395e3c90b4feed4a5631bc55848c2408 (patch) | |
tree | 739a3782d3344e28304152a09ad16d264fbb9d43 /ishtar_common/data_importer.py | |
parent | d57040f2c0c4c496f97e3d7bdf9a14db927de672 (diff) | |
download | Ishtar-8a7b2bbf395e3c90b4feed4a5631bc55848c2408.tar.bz2 Ishtar-8a7b2bbf395e3c90b4feed4a5631bc55848c2408.zip |
Import: fix bad targetkey creation
Conflicts:
ishtar_common/data_importer.py
Diffstat (limited to 'ishtar_common/data_importer.py')
-rw-r--r-- | ishtar_common/data_importer.py | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py index b5a9d92f0..1954559cc 100644 --- a/ishtar_common/data_importer.py +++ b/ishtar_common/data_importer.py @@ -63,14 +63,15 @@ class ImportFormater(object): def report_error(self, *args): return - def init(self, vals, output=None): + def init(self, vals, output=None, import_instance=None): try: lst = iter(self.formater) except TypeError: lst = [self.formater] for formater in lst: if formater: - formater.check(vals, output) + formater.check(vals, output, + import_instance=import_instance) def post_process(self, obj, context, value, owner=None): raise NotImplemented() @@ -92,7 +93,7 @@ class Formater(object): def format(self, value): return value - def check(self, values, output=None): + def check(self, values, output=None, import_instance=None): return class UnicodeFormater(Formater): @@ -233,7 +234,7 @@ class StrChoiceFormater(Formater): msgstr += unicode(_(u"%d. None of the above - skip")) % idx + u"\n" return msgstr, idx - def check(self, values, output=None): + def check(self, values, output=None, import_instance=None): if not output or output == 'silent': return if self.many_split: @@ -275,7 +276,8 @@ class StrChoiceFormater(Formater): if output == 'db' and self.db_target: from ishtar_common.models import TargetKey for missing in self.missings: - q = {'target':self.db_target, 'key':missing} + q = {'target':self.db_target, 'key':missing, + 'associated_import':import_instance} if TargetKey.objects.filter(**q).count(): continue with transaction.commit_on_success(): @@ -374,7 +376,7 @@ class StrToBoolean(Formater): value = slugify(value) return value - def check(self, values, output=None): + def check(self, values, output=None, import_instance=None): if not output or output == 'silent': return msgstr = unicode(_(u"Choice for \"%s\" is not available. "\ @@ -407,7 +409,8 @@ class StrToBoolean(Formater): from ishtar_common.models import TargetKey for missing in self.missings: try: - q = {'target':self.db_target, 'key':missing} + q = {'target':self.db_target, 'key':missing, + 'associated_import':import_instance} TargetKey.objects.create(**q) except IntegrityError: pass @@ -491,7 +494,8 @@ class Importer(object): vals[idx_col].append(val) for idx, formater in enumerate(self.line_format): if formater and idx < len(vals): - formater.init(vals[idx], output) + formater.init(vals[idx], output, + import_instance=self.import_instance) def importation(self, table, initialize=True): if initialize: |