summaryrefslogtreecommitdiff
path: root/ishtar_common/forms_common.py
diff options
context:
space:
mode:
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: