summaryrefslogtreecommitdiff
path: root/ishtar_common/data_importer.py
diff options
context:
space:
mode:
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:15:46 +0200
commit307520f3df65cf925609a4e66eb2628a198cabb5 (patch)
treebaebc1b5328511481f34350b50968137ec92cee8 /ishtar_common/data_importer.py
parente4179806c60905ef3fea9de6a6f14dd686298a72 (diff)
downloadIshtar-307520f3df65cf925609a4e66eb2628a198cabb5.tar.bz2
Ishtar-307520f3df65cf925609a4e66eb2628a198cabb5.zip
Import: fix bad targetkey creation
Diffstat (limited to 'ishtar_common/data_importer.py')
-rw-r--r--ishtar_common/data_importer.py23
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: