summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-06-11 18:26:05 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-06-11 18:26:05 +0200
commitab1f6d5016175a1990892f1ea7408dfe495de103 (patch)
tree42a6c85ea006b92e048c0e24b19a548b97e607e1 /ishtar_common
parenta549bc3c2560244ce6c71c877bd6654f7104660c (diff)
downloadIshtar-ab1f6d5016175a1990892f1ea7408dfe495de103.tar.bz2
Ishtar-ab1f6d5016175a1990892f1ea7408dfe495de103.zip
Imports: catch configuration error - add configuration for WarehouseDivisionLink
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/data_importer.py16
-rw-r--r--ishtar_common/models_imports.py3
-rw-r--r--ishtar_common/utils.py7
-rw-r--r--ishtar_common/views.py12
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: