diff options
-rw-r--r-- | ishtar_common/admin.py | 1 | ||||
-rw-r--r-- | ishtar_common/data_importer.py | 6 | ||||
-rw-r--r-- | ishtar_common/models.py | 16 |
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")), |