summaryrefslogtreecommitdiff
path: root/ishtar_common/data_importer.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/data_importer.py')
-rw-r--r--ishtar_common/data_importer.py32
1 files changed, 21 insertions, 11 deletions
diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py
index 10573ff06..0a63656ab 100644
--- a/ishtar_common/data_importer.py
+++ b/ishtar_common/data_importer.py
@@ -560,27 +560,35 @@ class Importer(object):
'regex_not_match': _(u"The regexp doesn't match.")
}
- def __create_models(self):
+ def _create_models(self):
from ishtar_common import models
q = models.ImporterType.objects.filter(slug=self.SLUG)
if not self.SLUG or q.count():
return
name = self.NAME if self.NAME else self.SLUG
+
+ model_name = self.OBJECT_CLS.__module__ + '.' + \
+ self.OBJECT_CLS.__name__
+
importer = models.ImporterType.objects.create(
slug=self.SLUG, name=name, description=self.DESC,
- associated_model=self.OBJECT_CLS)
+ associated_models=model_name)
+
for default in self.DEFAULTS:
values = self.DEFAULTS[default]
imp_default = models.ImporterDefault.objects.create(
importer_type=importer,
- target=default.join('__'))
- parent_model = imp_default.associated_model
+ target='__'.join(default))
for key in values:
+ if key in ('history_modifier',):
+ continue
value = values[key]
if hasattr(value, 'txt_idx') and value.txt_idx:
value = value.txt_idx
elif hasattr(value, 'pk') and value.pk:
value = value.pk
+ if callable(value):
+ value = value()
models.ImporterDefaultValues.objects.create(
default_target=imp_default,
target=key,
@@ -594,12 +602,12 @@ class Importer(object):
targets = line.field_name
if type(targets) not in (list, tuple):
targets = [targets]
- formaters = line.formaters
+ formaters = line.formater
if type(formaters) not in (list, tuple):
formaters = [formaters]
for idx, target in enumerate(targets):
formater = formaters[idx]
- formater_name = formater.__name__
+ formater_name = formater.__class__.__name__
if formater_name not in models.IMPORTER_TYPES_DCT:
formater_name = 'UnknowType'
options = ''
@@ -609,20 +617,22 @@ class Importer(object):
elif formater_name == 'UnicodeFormater':
options = unicode(formater.max_length)
elif formater_name == 'DateFormater':
- options = self.date_formats[0]
+ options = formater.date_formats[0]
formater_model, created = \
models.FormaterType.objects.get_or_create(
- formater_type=formater_name, options=options,
- many_split=formater.many_split)
+ formater_type=formater_name, options=options.strip(),
+ many_split=getattr(formater, 'many_split', None) or '')
regexp_filter = None
- if formater.regexp:
+ if getattr(formater, 'regexp', None):
regexp_filter, created = \
models.Regexp.objects.get_or_create(
regexp=formater.regex,
defaults={'name': "Default name"})
models.ImportTarget.objects.get_or_create(
column=column, target=target, formater_type=formater_model,
- force_new=formater.force_new, regexp_filter=regexp_filter)
+ force_new=getattr(formater, 'force_new', False),
+ regexp_filter=regexp_filter)
+ return True
def __init__(self, skip_lines=0, reference_header=None,
check_col_num=False, test=False, history_modifier=None,