about summary refs log tree commit diff
path: root/qc_app/files.py
diff options
context:
space:
mode:
Diffstat (limited to 'qc_app/files.py')
-rw-r--r--qc_app/files.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/qc_app/files.py b/qc_app/files.py
new file mode 100644
index 0000000..6485b27
--- /dev/null
+++ b/qc_app/files.py
@@ -0,0 +1,20 @@
+"""Utilities to deal with uploaded files."""
+from pathlib import Path
+from typing import Union
+
+from werkzeug.utils import secure_filename
+from flask import (
+    request,
+    current_app as app)
+
+def save_file(key: str, upload_dir: Path) -> Union[Path, bool]:
+    """Save the uploaded file and return the path."""
+    if not bool(request.files.get(key)):
+        return False
+    filename = Path(secure_filename(request.files[key].filename))
+    if not upload_dir.exists():
+        upload_dir.mkdir()
+
+    filepath = Path(upload_dir, filename)
+    request.files["samples_file"].save(filepath)
+    return filepath