summaryrefslogtreecommitdiff
path: root/ishtar_common/views.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2024-01-10 11:04:04 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2024-04-16 16:40:54 +0200
commit1e0ba5c083005ecbfde7b6218e5f46a6a06012d2 (patch)
tree06d7d9a3b2fa2330908eba41bb076c9b4b6eac15 /ishtar_common/views.py
parent739a36dc0f006a206e24c96324cda192d5b6837b (diff)
downloadIshtar-1e0ba5c083005ecbfde7b6218e5f46a6a06012d2.tar.bz2
Ishtar-1e0ba5c083005ecbfde7b6218e5f46a6a06012d2.zip
🐛 CSV result - fix missing columns (refs #5677) - 🩹 improve CSV result values
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r--ishtar_common/views.py22
1 files changed, 20 insertions, 2 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index c96876713..4fc2c94b7 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -2285,7 +2285,8 @@ class ImportCSVView(ImportPermissionMixin, IshtarMixin, LoginRequiredMixin, Temp
user = self.request.user
if not user.pk:
raise Http404()
- model = models.ImportGroup if kwargs.get("group", None) else models.Import
+ self.is_group = kwargs.get("group", None)
+ model = models.ImportGroup if self.is_group else models.Import
q = model.query_can_access(self.request.user, perm=self.permission_full).filter(pk=kwargs.get("pk", -1))
if not q.count():
raise Http404()
@@ -2316,13 +2317,30 @@ class ImportCSVView(ImportPermissionMixin, IshtarMixin, LoginRequiredMixin, Temp
import_item=self.import_item).values_list("pk", "ignored")
data["has_line_errors"] = has_line_errors
data["content"] = []
+ header = []
delimiter = ","
if self.kwargs["target"] == "source":
delimiter = self.import_item.csv_sep
+ if not self.is_group:
+ q = models.ImporterColumn.objects.filter(importer_type=self.import_item.importer_type).order_by("col_number")
+ cols = list(q.values_list("col_number", "label"))
+ col_dict = dict(cols)
+ if cols:
+ for idx in range(cols[-1][0]):
+ if (idx + 1) in col_dict:
+ header.append(col_dict[idx + 1])
+ else:
+ header.append("-")
+ data["header"] = header
with open(self.csv_file.path, "r", encoding=encoding) as f:
reader = csv.reader(f, delimiter=delimiter)
for idx, line in enumerate(reader):
- if not idx:
+ if self.kwargs["target"] == "source":
+ if idx < self.import_item.skip_lines:
+ if not header:
+ data["header"] = line
+ continue
+ elif not idx:
data["header"] = line
continue
if line_errors and len(line_errors) >= idx: