From 95b1566b4019b8b61a8e1fa8c2bef8b9fcacf273 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 16 Mar 2022 15:56:02 +0100 Subject: UI: small improvment on CSV file import --- ishtar_common/forms_common.py | 23 ++++++++++++++++++++++- ishtar_common/ishtar_menu.py | 6 ------ ishtar_common/templates/ishtar/import_list.html | 8 ++++++++ 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py index 0cdb70a36..af41e2fcf 100644 --- a/ishtar_common/forms_common.py +++ b/ishtar_common/forms_common.py @@ -16,9 +16,10 @@ # along with this program. If not, see . # See the file COPYING for details. - +import csv from collections import OrderedDict import datetime +from io import StringIO import os import pyqrcode import re @@ -184,6 +185,10 @@ class BaseImportForm(BSForm, forms.ModelForm): "imported_images": widgets.BSClearableFileInput, } + HEADERS = { + "name": FormHeader(_("Import (table)")), + } + def __init__(self, *args, **kwargs): user = kwargs.pop("user") super(BaseImportForm, self).__init__(*args, **kwargs) @@ -236,6 +241,22 @@ class BaseImportForm(BSForm, forms.ModelForm): return data + def clean_imported_file(self): + value = self.cleaned_data.get("imported_file", None) + if value: + try: + assert value.name.lower().endswith(".csv") + value.seek(0) + reader = csv.reader(StringIO(value.read().decode('utf-8'))) + for __ in reader: + break + value.seek(0) + except (AssertionError, UnicodeDecodeError): + raise forms.ValidationError( + _("This is not a valid CSV file.") + ) + return value + def clean_imported_images_link(self): value = self.cleaned_data.get("imported_images_link", None) if value: diff --git a/ishtar_common/ishtar_menu.py b/ishtar_common/ishtar_menu.py index 0574d0852..698cc6658 100644 --- a/ishtar_common/ishtar_menu.py +++ b/ishtar_common/ishtar_menu.py @@ -177,12 +177,6 @@ MENU_SECTIONS = [ "imports", _("Imports"), childs=[ - MenuItem( - "import-new", - _("New import"), - model=models.Import, - access_controls=["change_import"], - ), MenuItem( "import-list", _("Current imports"), diff --git a/ishtar_common/templates/ishtar/import_list.html b/ishtar_common/templates/ishtar/import_list.html index f98f47b66..1b571dff7 100644 --- a/ishtar_common/templates/ishtar/import_list.html +++ b/ishtar_common/templates/ishtar/import_list.html @@ -16,6 +16,14 @@ {% endblock %} {% block content %} +
{% include "ishtar/import_table.html" %}
-- cgit v1.2.3