From 1e0ba5c083005ecbfde7b6218e5f46a6a06012d2 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 10 Jan 2024 11:04:04 +0100 Subject: 🐛 CSV result - fix missing columns (refs #5677) - 🩹 improve CSV result values MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ishtar_common/views.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'ishtar_common/views.py') 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: -- cgit v1.2.3