From df7d618b2a4fc2d98a3f17e8e39e3e26f0d4f93d Mon Sep 17 00:00:00 2001
From: Patrick Jentsch <p.jentsch@uni-bielefeld.de>
Date: Thu, 1 Aug 2019 14:01:22 +0200
Subject: [PATCH] Add file type validation

---
 app/main/forms.py     | 12 +++++++-----
 app/services/forms.py | 10 +++++++++-
 2 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/app/main/forms.py b/app/main/forms.py
index d9f369fd..316be954 100644
--- a/app/main/forms.py
+++ b/app/main/forms.py
@@ -1,5 +1,5 @@
 from flask_wtf import FlaskForm
-from wtforms import MultipleFileField, StringField, SubmitField
+from wtforms import MultipleFileField, StringField, SubmitField, ValidationError
 from wtforms.validators import DataRequired, Length
 
 
@@ -14,8 +14,10 @@ class CreateCorpusForm(FlaskForm):
         'Title',
         validators=[DataRequired(), Length(1, 32)]
     )
-    '''
+
     def validate_files(form, field):
-        for file in form.files.getlist[field.name]:
-            if file.mimetype
-    '''
+        for file in field.data:
+            if not file.filename.lower().endswith('.vrt'):
+                raise ValidationError(
+                    'File does not have an approved extension: .vrt'
+                )
diff --git a/app/services/forms.py b/app/services/forms.py
index 655f0e58..d0c0146b 100644
--- a/app/services/forms.py
+++ b/app/services/forms.py
@@ -1,5 +1,5 @@
 from flask_wtf import FlaskForm
-from wtforms import MultipleFileField, SelectField, StringField, SubmitField
+from wtforms import MultipleFileField, SelectField, StringField, SubmitField, ValidationError
 from wtforms.validators import DataRequired, Length
 
 
@@ -29,3 +29,11 @@ class CreateOCRJobForm(FlaskForm):
         'Title',
         validators=[DataRequired(), Length(1, 32)]
     )
+
+    def validate_files(form, field):
+        for file in field.data:
+            if not file.filename.lower().endswith(('.pdf', '.tif', '.tiff')):
+                raise ValidationError(
+                    'File does not have an approved extension: '
+                    '.pdf | .tif | .tiff'
+                )
-- 
GitLab