diff options
| -rw-r--r-- | ishtar_common/data_importer.py | 16 | ||||
| -rw-r--r-- | ishtar_common/models_imports.py | 3 | ||||
| -rw-r--r-- | ishtar_common/utils.py | 7 | ||||
| -rw-r--r-- | ishtar_common/views.py | 12 | 
4 files changed, 25 insertions, 13 deletions
diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py index 0caccf46d..6e71d69bb 100644 --- a/ishtar_common/data_importer.py +++ b/ishtar_common/data_importer.py @@ -28,6 +28,7 @@ import zipfile  from django.conf import settings  from django.contrib.auth.models import User  from django.db.models.fields import FieldDoesNotExist +from django.core.exceptions import FieldError  from django.core.files import File  from django.db import IntegrityError, DatabaseError, transaction  from django.db.models import Q @@ -1480,8 +1481,14 @@ class Importer(object):                      created = False                      if not self.MODEL_CREATION_LIMIT or \                                      model in self.MODEL_CREATION_LIMIT: -                        v, created = model.objects.get_or_create( -                            **v) +                        try: +                            v, created = model.objects.get_or_create( +                                **v) +                        except FieldError as e: +                            raise ImporterError( +                                unicode( +                                    _(u"Importer configuration error: " +                                      u"\"{}\".")).format(e.message))                      else:                          get_v = v.copy()                          if 'defaults' in get_v: @@ -1585,7 +1592,7 @@ class Importer(object):              c_path.append(attribute)              data[attribute], created = self.get_object(                  field_object.rel.to, data[attribute].copy(), c_path) -        except ImporterError, msg: +        except ImporterError as msg:              self.errors.append((self.idx_line, None, msg))              data[attribute] = None @@ -1814,7 +1821,6 @@ class Importer(object):                  # post save/m2m specific fix                  obj.fix()          except IntegrityError as e: -            message = e.message              try:                  message = e.message.decode('utf-8')              except (UnicodeDecodeError, UnicodeDecodeError): @@ -1824,7 +1830,7 @@ class Importer(object):              except UnicodeDecodeError:                  data = ''              raise ImporterError( -                "Erreur d'import %s %s, contexte : %s, erreur : %s" +                u"Erreur d'import %s %s, contexte : %s, erreur : %s"                  % (unicode(cls), unicode("__".join(path)),                     unicode(data), message))          return obj, created diff --git a/ishtar_common/models_imports.py b/ishtar_common/models_imports.py index 152d8eddb..6b910a440 100644 --- a/ishtar_common/models_imports.py +++ b/ishtar_common/models_imports.py @@ -632,6 +632,9 @@ TARGET_MODELS = [      ('archaeological_finds.models.ConservatoryState',       _(u"Conservatory state")),      ('archaeological_warehouse.models.ContainerType', _(u"Container type")), +    ('archaeological_warehouse.models.WarehouseDivision', +     _(u"Warehouse division")), +    ('archaeological_warehouse.models.WarehouseType', _(u"Warehouse type")),      ('archaeological_finds.models.TreatmentType', _(u"Treatment type")),      ('archaeological_finds.models.TreatmentEmergencyType',       _(u"Treatment emergency type")), diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py index c25cdf605..983ec5830 100644 --- a/ishtar_common/utils.py +++ b/ishtar_common/utils.py @@ -410,9 +410,10 @@ def get_field_labels_from_path(model, path):          try:              field = model._meta.get_field(key)          except: -            return labels +            labels.append(key) +            continue          if hasattr(field, 'verbose_name'):              labels.append(field.verbose_name) -        if field.one_to_many or field.one_to_one or field.many_to_many: -            model = field.model +        else: +            labels.append(key)      return labels diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 2c2a6fe7e..decbef589 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -1792,9 +1792,9 @@ class ImportListView(IshtarMixin, LoginRequiredMixin, ListView):      def get_queryset(self):          q = self.model.objects.exclude(state='AC')          if self.request.user.is_superuser: -            return q.order_by('-creation_date').order_by('-end_date') +            return q.order_by('-pk')          user = models.IshtarUser.objects.get(pk=self.request.user.pk) -        return q.filter(user=user).order_by('-end_date') +        return q.filter(user=user).order_by('-pk')      def post(self, request, *args, **kwargs):          for field in request.POST: @@ -2177,9 +2177,11 @@ class ImportStepByStepView(IshtarMixin, LoginRequiredMixin, TemplateView):      def transform_keys_to_label(self, path, cls, dct):          value_dct = {}          for k in dct: -            label = unicode( -                get_field_labels_from_path(cls, [k])[0] -            ) +            label = get_field_labels_from_path(cls, [k]) +            if label: +                label = unicode(label[0]) +            else: +                label = k              concat_path = u"__".join(list(path) + [k])              if concat_path in self.path_to_column:  | 
