summaryrefslogtreecommitdiff
path: root/ishtar_common/forms_common.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2022-03-16 15:56:02 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2022-12-12 12:21:00 +0100
commitdab845478f57be35218b7065d0506d9803fc8342 (patch)
treef3d74a518d99ae0ed0fa5f8e30445619b74c0292 /ishtar_common/forms_common.py
parent57aeaae47ac4ddb9d0a171fd19d6a837c1281bad (diff)
downloadIshtar-dab845478f57be35218b7065d0506d9803fc8342.tar.bz2
Ishtar-dab845478f57be35218b7065d0506d9803fc8342.zip
UI: small improvment on CSV file import
Diffstat (limited to 'ishtar_common/forms_common.py')
-rw-r--r--ishtar_common/forms_common.py23
1 files changed, 22 insertions, 1 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 <http://www.gnu.org/licenses/>.
# 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: