diff options
Diffstat (limited to 'ishtar_common/data_importer.py')
-rw-r--r-- | ishtar_common/data_importer.py | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py index 19382c4aa..4f15e8695 100644 --- a/ishtar_common/data_importer.py +++ b/ishtar_common/data_importer.py @@ -63,7 +63,7 @@ class ImportFormater(object): def report_error(self, *args): return - def init(self, vals, output=None, choose_default=False): + def init(self, vals, output=None, choose_default=False, import_instance=None): try: lst = iter(self.formater) except TypeError: @@ -71,7 +71,8 @@ class ImportFormater(object): for formater in lst: if formater: formater.check(vals, output, self.comment, - choose_default=choose_default) + choose_default=choose_default, + import_instance=import_instance) def post_process(self, obj, context, value, owner=None): raise NotImplemented() @@ -93,7 +94,8 @@ class Formater(object): def format(self, value): return value - def check(self, values, output=None, comment='', choose_default=False): + def check(self, values, output=None, comment='', choose_default=False, + import_instance=None): return class ChoiceChecker(object): @@ -246,7 +248,8 @@ class StrChoiceFormater(Formater, ChoiceChecker): msgstr += unicode(_(u"%d. None of the above - skip")) % idx + u"\n" return msgstr, idx - def check(self, values, output=None, comment='', choose_default=False): + def check(self, values, output=None, comment='', choose_default=False, + import_instance=None): if (not output or output == 'silent') and not choose_default: return if self.many_split: @@ -294,7 +297,8 @@ class StrChoiceFormater(Formater, ChoiceChecker): 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(): @@ -401,7 +405,8 @@ class StrToBoolean(Formater, ChoiceChecker): value = slugify(value) return value - def check(self, values, output=None, comment='', choose_default=False): + def check(self, values, output=None, comment='', choose_default=False, + import_instance=None): if (not output or output == 'silent') and not choose_default: return msgstr = comment + u" - " @@ -440,7 +445,8 @@ class StrToBoolean(Formater, ChoiceChecker): 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} if not TargetKey.objects.filter(**q).count(): TargetKey.objects.create(**q) except IntegrityError: @@ -545,7 +551,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, choose_default=choose_default) + formater.init(vals[idx], output, choose_default=choose_default, + import_instance=self.import_instance) def importation(self, table, initialize=True, choose_default=False): if initialize: |