From 86c03a98d11e93880b4568776e0939113a92a707 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 27 Feb 2019 20:44:52 +0100 Subject: Migrate to python 3 - Clean old migrations and some old scripts --- ishtar_common/models_imports.py | 92 ++++++++++++++++++++--------------------- 1 file changed, 45 insertions(+), 47 deletions(-) (limited to 'ishtar_common/models_imports.py') 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: -- cgit v1.2.3