diff options
Diffstat (limited to 'ishtar_common/models_imports.py')
| -rw-r--r-- | ishtar_common/models_imports.py | 36 | 
1 files changed, 36 insertions, 0 deletions
| diff --git a/ishtar_common/models_imports.py b/ishtar_common/models_imports.py index 10124b024..cd8865eca 100644 --- a/ishtar_common/models_imports.py +++ b/ishtar_common/models_imports.py @@ -32,6 +32,7 @@ from django.conf import settings  from django.contrib.gis.db import models  from django.core.exceptions import SuspiciousOperation  from django.core.files.base import ContentFile +from django.core.validators import validate_comma_separated_integer_list  from django.db.models.base import ModelBase  from django.db.models.signals import pre_delete  from django.template.defaultfilters import slugify @@ -831,6 +832,12 @@ class Import(models.Model):      # used by step by step import      current_line = models.IntegerField(_(u"Current line"), blank=True,                                         null=True) +    number_of_line = models.IntegerField(_(u"Number of line"), blank=True, +                                         null=True) +    imported_line_numbers = models.TextField( +        _(u"Imported line numbers"), blank=True, null=True, +        validators=[validate_comma_separated_integer_list] +    )      class Meta:          verbose_name = _(u"Import") @@ -856,6 +863,35 @@ class Import(models.Model):                  errors.append(row)          return errors +    def get_number_of_lines(self): +        if self.number_of_line: +            return self.number_of_line +        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) +            nb = sum(1 for row in reader) - self.skip_lines +        self.number_of_line = nb +        self.save() +        return nb + +    def add_imported_line(self, idx_line): +        if self.imported_line_numbers and \ +                idx_line in self.imported_line_numbers.split(','): +            return +        if self.imported_line_numbers: +            self.imported_line_numbers += "," +        else: +            self.imported_line_numbers = "" +        self.imported_line_numbers += str(idx_line) +        self.save() + +    def line_is_imported(self, idx_line): +        return self.imported_line_numbers and \ +               str(idx_line) in self.imported_line_numbers.split(',') +      def get_actions(self):          """          Get available action relevant with the current status | 
