about summary refs log tree commit diff
path: root/qc_app
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2022-07-13 01:27:00 +0300
committerFrederick Muriuki Muriithi2022-07-19 04:59:59 +0300
commit27032e1876373f9b519275bffbca117f2c96ca1f (patch)
tree3c79cece5f09854d496f0bc9a0293a4fe3d2f5e6 /qc_app
parent45396cacc693a74f7c05a96f814225145dc27ccc (diff)
downloadgn-uploader-27032e1876373f9b519275bffbca117f2c96ca1f.tar.gz
Implement study creation
Enable the creation of the new study, and redirect appropriately with
the new study id.
Diffstat (limited to 'qc_app')
-rw-r--r--qc_app/dbinsert.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/qc_app/dbinsert.py b/qc_app/dbinsert.py
index 18bc7c2..4fbd0d3 100644
--- a/qc_app/dbinsert.py
+++ b/qc_app/dbinsert.py
@@ -1,6 +1,7 @@
 "Handle inserting data into the database"
 import os
 import json
+import datetime
 from functools import reduce
 
 import requests
@@ -149,9 +150,29 @@ def create_study():
     "Create a new study (ProbeFreeze)."
     form = request.form
     try:
+        assert form.get("genechipid"), "platform"
         assert form.get("studyname"), "study name"
         assert form.get("inbredsetid"), "group"
         assert form.get("tissueid"), "type/tissue"
+
+        with database_connection() as conn:
+            with conn.cursor(cursorclass=DictCursor) as cursor:
+                cursor.execute("SELECT MAX(Id) AS last_id FROM ProbeFreeze")
+                new_studyid = cursor.fetchone()["last_id"] + 1
+                values = (
+                    new_studyid, new_studyid, form["genechipid"],
+                    form["tissueid"], form["studyname"],
+                    form.get("studyfullname", ""),
+                    form.get("studyshortname", ""),
+                    datetime.datetime.now().date().strftime("%Y-%m-%d"),
+                    form["inbredsetid"])
+                query = (
+                    "INSERT INTO ProbeFreeze() "
+                    "VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s)")
+                cursor.execute(query, values)
+                return redirect(
+                    url_for("dbinsert.select_dataset", studyid=new_studyid),
+                    code=307)
     except AssertionError as aserr:
         flash(f"Missing data: {aserr.args[0]}", "alert-error")
         return redirect(url_for("dbinsert.select_study"), code=307)