summaryrefslogtreecommitdiff
path: root/ishtar_common/models_imports.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/models_imports.py')
-rw-r--r--ishtar_common/models_imports.py92
1 files changed, 45 insertions, 47 deletions
diff --git a/ishtar_common/models_imports.py b/ishtar_common/models_imports.py
index e4d912c98..904f3f013 100644
--- a/ishtar_common/models_imports.py
+++ b/ishtar_common/models_imports.py
@@ -25,7 +25,6 @@ import logging
import shutil
import re
import tempfile
-import unicodecsv
import zipfile
from django.conf import settings
@@ -106,7 +105,7 @@ class ImporterModel(models.Model):
verbose_name_plural = _(u"Importer - Models")
ordering = ('name',)
- def __unicode__(self):
+ def __str__(self):
return self.name
def natural_key(self):
@@ -150,7 +149,7 @@ class ImporterType(models.Model):
def natural_key(self):
return (self.slug, )
- def __unicode__(self):
+ def __str__(self):
return self.name
def get_importer_class(self, import_instance=None):
@@ -242,8 +241,7 @@ class ImporterType(models.Model):
def get_associated_model(parent_model, keys):
model = None
- if isinstance(parent_model, unicode) or \
- isinstance(parent_model, str):
+ if isinstance(parent_model, str):
OBJECT_CLS = import_class(parent_model)
else:
OBJECT_CLS = parent_model
@@ -254,11 +252,10 @@ def get_associated_model(parent_model, keys):
elif not idx:
if item not in fields:
raise ImporterError(
- unicode(
- _(u"Importer configuration error: "
- u"\"{}\" is not available for \"{}\"."
- u" Check your default and column "
- u"configuration")).format(
+ str(_("Importer configuration error: "
+ "\"{}\" is not available for \"{}\"."
+ " Check your default and column "
+ "configuration")).format(
item, OBJECT_CLS.__name__))
field = fields[item]
if hasattr(field, 'rel') and hasattr(field.rel, 'to'):
@@ -288,8 +285,8 @@ class ImporterDefault(models.Model):
unique_together = ('importer_type', 'target')
objects = ImporterDefaultManager()
- def __unicode__(self):
- return u"{} - {}".format(self.importer_type, self.target)
+ def __str__(self):
+ return "{} - {}".format(self.importer_type, self.target)
def natural_key(self):
return self.importer_type.slug, self.target
@@ -341,8 +338,8 @@ class ImporterDefaultValues(models.Model):
self.default_target.target,
self.target)
- def __unicode__(self):
- return u"{} - {}".format(self.default_target, self.target, self.value)
+ def __str__(self):
+ return "{} - {}".format(self.default_target, self.target, self.value)
def get_value(self):
parent_model = self.default_target.associated_model
@@ -404,8 +401,8 @@ class ImporterColumn(models.Model):
ordering = ('importer_type', 'col_number')
unique_together = ('importer_type', 'col_number')
- def __unicode__(self):
- return u"{} - {}".format(self.importer_type, self.col_number)
+ def __str__(self):
+ return "{} - {}".format(self.importer_type, self.col_number)
@property
def col_string(self):
@@ -470,7 +467,7 @@ class Regexp(models.Model):
verbose_name = _(u"Importer - Regular expression")
verbose_name_plural = _(u"Importer - Regular expressions")
- def __unicode__(self):
+ def __str__(self):
return self.name
def natural_key(self):
@@ -538,7 +535,7 @@ class ImportTarget(models.Model):
verbose_name_plural = _(u"Importer - Targets")
unique_together = ('column', 'target')
- def __unicode__(self):
+ def __str__(self):
return self.target[:50] if self.target else self.comment
@cached_property
@@ -595,7 +592,7 @@ class TargetKeyGroup(models.Model):
verbose_name = _(u"Importer - Target key group")
verbose_name_plural = _(u"Importer - Target key groups")
- def __unicode__(self):
+ def __str__(self):
return self.name
@@ -624,8 +621,8 @@ class TargetKey(models.Model):
verbose_name_plural = _(u"Importer - Targets keys")
ordering = ('target', 'key')
- def __unicode__(self):
- return u" - ".join([unicode(self.target), self.key[:50]])
+ def __str__(self):
+ return u" - ".join([str(self.target), self.key[:50]])
def column_nb(self):
# for the admin
@@ -657,12 +654,12 @@ class TargetKey(models.Model):
# pk is given
try:
v = self.target.associated_model.objects.get(
- pk=unicode(int(self.value)))
+ pk=str(int(self.value)))
except (ValueError, self.target.associated_model.DoesNotExist):
# try with txt_idx
try:
v = self.target.associated_model.objects.get(
- txt_idx=unicode(self.value))
+ txt_idx=str(self.value))
except self.target.associated_model.DoesNotExist:
pass
if v:
@@ -787,9 +784,9 @@ class FormaterType(models.Model):
def natural_key(self):
return self.formater_type, self.options, self.many_split
- def __unicode__(self):
+ def __str__(self):
return u" - ".join(
- [unicode(dict(IMPORTER_TYPES)[self.formater_type])
+ [str(dict(IMPORTER_TYPES)[self.formater_type])
if self.formater_type in IMPORTER_TYPES_DCT else ''] +
[getattr(self, k) for k in ('options', 'many_split')
if getattr(self, k)])
@@ -946,8 +943,8 @@ class Import(models.Model):
verbose_name = _(u"Import")
verbose_name_plural = _(u"Imports")
- def __unicode__(self):
- return u"{} | {}".format(self.name or u"-", self.importer_type)
+ def __str__(self):
+ return "{} | {}".format(self.name or "-", self.importer_type)
def need_matching(self):
return bool(TargetKey.objects.filter(associated_import=self,
@@ -958,11 +955,12 @@ class Import(models.Model):
if not self.error_file:
return []
errors = []
- with open(self.error_file.path, 'rb') as csvfile:
- reader = csv.DictReader(csvfile, fieldnames=['line', 'column',
- 'error'])
- reader.next() # pass the header
- for row in reader:
+ with open(self.error_file.path, 'rt') as csvfile:
+ reader = csv.DictReader(
+ csvfile, fieldnames=['line', 'column', 'error'])
+ for idx, row in enumerate(reader):
+ if not idx: # pass the header
+ continue
errors.append(row)
return errors
@@ -972,10 +970,9 @@ class Import(models.Model):
if not self.imported_file or not self.imported_file.path:
return
filename = self.imported_file.path
- with open(filename, 'r') as f:
- reader = unicodecsv.reader(
- f, encoding=self.encoding, delimiter=str(self.csv_sep))
- nb = sum(1 for row in reader) - self.skip_lines
+ with open(filename, 'r', encoding=self.encoding) as f:
+ reader = csv.reader(f, delimiter=self.csv_sep)
+ nb = sum(1 for __ in reader) - self.skip_lines
self.number_of_line = nb
self.save()
return nb
@@ -1094,16 +1091,17 @@ class Import(models.Model):
if coding != self.encoding]
for encoding in encodings:
try:
- with open(imported_file) as csv_file:
- vals = [line for line in unicodecsv.reader(
- csv_file, encoding=encoding,
- delimiter=str(self.csv_sep))]
+ with open(imported_file, encoding=encoding) as csv_file:
+ vals = [
+ line for line in csv.reader(csv_file,
+ delimiter=self.csv_sep)
+ ]
if tmpdir:
shutil.rmtree(tmpdir)
return vals
except UnicodeDecodeError:
pass # try the next encoding
- except unicodecsv.Error:
+ except csv.Error:
raise ImporterError(_(u"Error in the CSV file."))
if tmpdir:
shutil.rmtree(tmpdir)
@@ -1131,8 +1129,8 @@ class Import(models.Model):
return self.check_modified(session_key=session_key)
put_session_message(
session_key,
- unicode(
- _(u"Modification check {} added to the queue")
+ str(
+ _("Modification check {} added to the queue")
).format(self.name),
"info")
self.state = 'HQ'
@@ -1202,7 +1200,7 @@ class Import(models.Model):
return self.importation(session_key=session_key)
put_session_message(
session_key,
- unicode(_(u"Import {} added to the queue")).format(self.name),
+ str(_(u"Import {} added to the queue")).format(self.name),
"info")
self.state = 'IQ'
self.end_date = datetime.datetime.now()
@@ -1220,7 +1218,7 @@ class Import(models.Model):
self.data_table, user=self.user,
line_to_process=line_to_process, simulate=simulate)
except IOError:
- error_message = unicode(_(u"Error on imported file: {}")).format(
+ error_message = str(_(u"Error on imported file: {}")).format(
self.imported_file)
importer.errors = [error_message]
if session_key:
@@ -1255,7 +1253,7 @@ class Import(models.Model):
error_file,
ContentFile(importer.get_csv_errors().encode('utf-8'))
)
- msg = unicode(_(u"Import {} finished with errors")).format(
+ msg = str(_(u"Import {} finished with errors")).format(
self.name)
msg_cls = "warning"
else:
@@ -1264,7 +1262,7 @@ class Import(models.Model):
else:
self.state = 'F'
self.error_file = None
- msg = unicode(_(u"Import {} finished with no errors")).format(
+ msg = str(_(u"Import {} finished with no errors")).format(
self.name)
msg_cls = "primary"
if session_key: