about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2024-06-12 10:33:37 -0500
committerFrederick Muriuki Muriithi2024-06-12 10:33:37 -0500
commitd95c29bdd643a827083b3e462d3f363d80c96024 (patch)
tree02eaa6a49ac6ea0a285831477ec3844ec2f05b97
parenta2344e3697bbff14b82bdbe5fa08a1cbaea09cbc (diff)
downloadgn-uploader-d95c29bdd643a827083b3e462d3f363d80c96024.tar.gz
Validate input before attempting to use it.
-rw-r--r--qc_app/samples.py17
1 files changed, 15 insertions, 2 deletions
diff --git a/qc_app/samples.py b/qc_app/samples.py
index 62b0361..e7be458 100644
--- a/qc_app/samples.py
+++ b/qc_app/samples.py
@@ -22,6 +22,7 @@ from functional_tools import take
 
 from qc_app import jobs
 from qc_app.files import save_file
+from qc_app.input_validation import is_empty_input, is_integer_input
 from qc_app.db_utils import (
     with_db_connection,
     database_connection,
@@ -207,14 +208,26 @@ def upload_samples():
                                     code=307)
 
     with database_connection(app.config["SQL_URI"]) as conn:
-        species = species_by_id(conn, request.form.get("species_id"))
+        _speciesid = request.form.get("species_id")
+        if is_integer_input(_speciesid):
+            flash("You did not provide a valid species. Please select one to "
+                  "continue.",
+                  "alert-danger")
+            return redirect(url_for("entry.upload_file"))
+        species = species_by_id(conn, _speciesid)
         if not bool(species):
             flash("Invalid species!", "alert-error")
             return samples_uploads_page
 
+        _population_id = request.form.get("inbredset_id")
+        if not is_integer_input(_population_id):
+            flash("You did not provide a valid population. Please select one "
+                  "to continue.",
+                  "alert-danger")
+            return redirect("samples.select_species", code=307)
         population = with_db_connection(
             lambda conn: population_by_id(
-                conn, int(request.form.get("inbredset_id"))))
+                conn, int(_population_id)))
         if not bool(population):
             flash("Invalid grouping/population!", "alert-error")
             return samples_uploads_page