8
8
9
9
from backend .lib .processor import BasicProcessor
10
10
from common .config_manager import config
11
- from common .lib .exceptions import QueryParametersException
11
+ from common .lib .exceptions import QueryParametersException , QueryNeedsExplicitConfirmationException
12
12
from common .lib .user_input import UserInput
13
13
from common .lib .helpers import andify
14
14
@@ -65,9 +65,10 @@ def validate_query(query, request, user):
65
65
seen_types = set ()
66
66
all_files = 0
67
67
68
- uploaded_files = request .files .getlist ("option-data_upload" )
68
+ uploaded_files = request .files .getlist ("option-data_upload" ) # if multiple files are uploaded; the first validate_query only has a single file
69
69
single_zip_file = uploaded_files and len (uploaded_files ) == 1 and uploaded_files [0 ].filename .lower ().endswith (".zip" )
70
70
71
+ # option-data_upload-entries is passed the first time the form is submitted if the user has uploaded a zip file
71
72
if "option-data_upload-entries" in request .form or single_zip_file :
72
73
# we have a zip file!
73
74
try :
@@ -96,6 +97,8 @@ def validate_query(query, request, user):
96
97
# figure out if we have mixed media types
97
98
seen_types = set ()
98
99
for file in files :
100
+ if not query .get ("frontend-confirm" ) and file ["filename" ].endswith (".svg" ):
101
+ raise QueryNeedsExplicitConfirmationException ("SVG files may not be processed correctly by some 4CAT processors. Are you sure you want to proceed?" )
99
102
try :
100
103
file_type = mimetypes .guess_type (file ["filename" ])[0 ].split ("/" )[0 ]
101
104
seen_types .add (file_type )
@@ -121,6 +124,11 @@ def validate_query(query, request, user):
121
124
if file .filename == ".metadata.json" or file .filename .endswith (".log" ):
122
125
continue
123
126
127
+ # Warn on SVG files
128
+ if not query .get ("frontend-confirm" ) and file .filename .lower ().endswith (".svg" ):
129
+ raise QueryNeedsExplicitConfirmationException (
130
+ "SVG files may not be processed correctly by some 4CAT processors. Are you sure you want to proceed?" )
131
+
124
132
# when uploading multiple files, we don't want zips
125
133
if file .filename .lower ().endswith (".zip" ):
126
134
raise QueryParametersException ("When uploading media in a zip archive, please upload exactly one "
0 commit comments