diff options
Diffstat (limited to 'ishtar_common/forms_common.py')
-rw-r--r-- | ishtar_common/forms_common.py | 23 |
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: |