summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@proxience.com>2015-05-12 21:13:28 +0200
committerÉtienne Loks <etienne.loks@proxience.com>2015-05-12 21:13:28 +0200
commitb6e922a450d7780cefa196e5e6cc67c393bb338f (patch)
tree136ff886ec546b6049f136fe43ed8e58f13aa75b /ishtar_common
parent56e970d135ed542003b3ace21dddd1292297f486 (diff)
parent0d4f06d918dd82212403d41b9d88a53080ba724e (diff)
downloadIshtar-b6e922a450d7780cefa196e5e6cc67c393bb338f.tar.bz2
Ishtar-b6e922a450d7780cefa196e5e6cc67c393bb338f.zip
Merge branch 'stable'
Conflicts: ishtar_common/data_importer.py
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/admin.py1
-rw-r--r--ishtar_common/data_importer.py6
-rw-r--r--ishtar_common/models.py16
3 files changed, 14 insertions, 9 deletions
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py
index 8a509f1fc..c0ca88ed0 100644
--- a/ishtar_common/admin.py
+++ b/ishtar_common/admin.py
@@ -117,6 +117,7 @@ class ImportTargetInline(admin.TabularInline):
class ImporterColumnAdmin(admin.ModelAdmin):
list_display = ('importer_type', 'col_number', 'required')
+ list_filter = ('importer_type',)
inlines = (ImporterDuplicateFieldInline, ImportTargetInline)
admin.site.register(models.ImporterColumn, ImporterColumnAdmin)
diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py
index 5b501af17..98e681635 100644
--- a/ishtar_common/data_importer.py
+++ b/ishtar_common/data_importer.py
@@ -543,7 +543,7 @@ class Importer(object):
vals.append([])
vals[idx_col].append(val)
for idx, formater in enumerate(self.line_format):
- if formater:
+ if formater and idx < len(vals):
formater.init(vals[idx], output, choose_default=choose_default)
def importation(self, table, initialize=True, choose_default=False):
@@ -914,8 +914,8 @@ class Importer(object):
return data
def _format_csv_line(self, values):
- return u",".join([v and unicode(v).replace('"', '""') or u'-'
- for v in values])
+ return u'"' + u'","'.join([v and unicode(v).replace('"', '""') or u'-'
+ for v in values]) + u'"'
def _get_csv(self, rows, header=[]):
if not rows:
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index a99470c2b..2ed6b28c5 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -58,7 +58,8 @@ from ishtar_common.ooo_replace import ooo_replace
from ishtar_common.model_merging import merge_model_objects
from ishtar_common.utils import get_cache
from ishtar_common.data_importer import Importer, ImportFormater, \
- IntegerFormater, FloatFormater, UnicodeFormater, DateFormater, TypeFormater
+ IntegerFormater, FloatFormater, UnicodeFormater, DateFormater, \
+ TypeFormater, YearFormater
def post_save_user(sender, **kwargs):
user = kwargs['instance']
@@ -1053,6 +1054,7 @@ class ImporterType(models.Model):
column.regexp_pre_filter.regexp)
formater_kwargs['duplicate_fields'] = [field.field_name
for field in column.duplicate_fields.all()]
+ formater_kwargs['required'] = column.required
formater = ImportFormater(targets, formater_types,
**formater_kwargs)
LINE_FORMAT.append(formater)
@@ -1167,7 +1169,8 @@ class Regexp(models.Model):
verbose_name = _(u"Importer - Regular expression")
verbose_name_plural = _(u"Importer - Regular expressions")
-IMPORTER_TYPES = []
+ def __unicode__(self):
+ return self.name
class ImportTarget(models.Model):
"""
@@ -1252,6 +1255,7 @@ IMPORTER_TYPES = (
('UnicodeFormater', _(u"String")),
('DateFormater', _(u"Date")),
('TypeFormater', _(u"Type")),
+ ('YearFormater', _(u"Year")),
)
IMPORTER_TYPES_DCT = {
@@ -1260,6 +1264,7 @@ IMPORTER_TYPES_DCT = {
'UnicodeFormater':UnicodeFormater,
'DateFormater':DateFormater,
'TypeFormater':TypeFormater,
+ 'YearFormater':YearFormater,
}
DATE_FORMATS = (
@@ -1282,6 +1287,7 @@ class FormaterType(models.Model):
verbose_name = _(u"Importer - Formater type")
verbose_name_plural = _(u"Importer - Formater types")
unique_together = ('formater_type', 'options', 'many_split')
+ ordering = ('formater_type', 'options')
def __unicode__(self):
return u" - ".join([unicode(dict(IMPORTER_TYPES)[self.formater_type])
@@ -1308,10 +1314,6 @@ class FormaterType(models.Model):
else:
model = import_class(self.options)
return TypeFormater(model, **kwargs)
- elif self.formater_type == 'IntegerFormater':
- return IntegerFormater(**kwargs)
- elif self.formater_type == 'FloatFormater':
- return FloatFormater(**kwargs)
elif self.formater_type == 'UnicodeFormater':
try:
return UnicodeFormater(int(self.options.strip()), **kwargs)
@@ -1319,6 +1321,8 @@ class FormaterType(models.Model):
return
elif self.formater_type == 'DateFormater':
return DateFormater(self.options, **kwargs)
+ else:
+ return IMPORTER_TYPES_DCT[self.formater_type](**kwargs)
IMPORT_STATE = (("C", _(u"Created")),
("AP", _(u"Analyse in progress")),