about summary refs log tree commit diff
path: root/uploader
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2025-05-05 15:46:48 -0500
committerFrederick Muriuki Muriithi2025-05-05 16:20:11 -0500
commitfc5bc996e18dd67cccb6784624b038800f986021 (patch)
tree0b51c78d6fddba81cf664c22ede221e063ae0c5c /uploader
parenta4e6fddea8a25b30b775482ee9717386389486ad (diff)
downloadgn-uploader-fc5bc996e18dd67cccb6784624b038800f986021.tar.gz
Init setup and script for async job to load phenotypes into database
Diffstat (limited to 'uploader')
-rw-r--r--uploader/phenotypes/views.py34
1 files changed, 31 insertions, 3 deletions
diff --git a/uploader/phenotypes/views.py b/uploader/phenotypes/views.py
index 00ecadb..a54e1a3 100644
--- a/uploader/phenotypes/views.py
+++ b/uploader/phenotypes/views.py
@@ -17,7 +17,11 @@ from pymonad.either import Left
 from requests.models import Response
 from MySQLdb.cursors import DictCursor
 from werkzeug.utils import secure_filename
+
+from gn_libs import sqlite3
+from gn_libs import jobs as gnlibs_jobs
 from gn_libs.mysqldb import database_connection
+
 from flask import (flash,
                    request,
                    url_for,
@@ -622,7 +626,33 @@ def load_data_to_database(
         **kwargs
 ):# pylint: disable=[unused-argument]
     """Load the data from the given QC job into the database."""
-    raise NotImplemented("This feature is yet to be implemented!")
+    jobs_db = app.config["ASYNCHRONOUS_JOBS_SQLITE_DB"]
+    with (Redis.from_url(app.config["REDIS_URL"], decode_responses=True) as rconn,
+          sqlite3.connection(jobs_db) as conn):
+        qc_job = jobs.job(rconn, jobs.jobsnamespace(), request.form["data-qc-job-id"])
+        load_job_id = uuid.uuid4()
+        command = [
+            sys.executable,
+            "-u",
+            "-m",
+            "scripts.load_phenotypes_to_db",
+            jobs_db,
+            str(load_job_id),
+            "--log-level",
+            logging.getLevelName(
+                app.logger.getEffectiveLevel()
+            ).lower()
+        ]
+        load_job = gnlibs_jobs.launch_job(
+            gnlibs_jobs.initialise_job(conn,
+                                       load_job_id,
+                                       command,
+                                       "load-new-phenotypes-data",
+                                       extra_meta={}),
+            jobs_db,
+            f"{app.config['UPLOAD_FOLDER']}/job_errors",
+            worker_manager="gn_libs.jobs.launcher")
+        return str(load_job)
 
 
 def update_phenotype_metadata(conn, metadata: dict):
@@ -996,8 +1026,6 @@ def edit_upload_phenotype_data(# pylint: disable=[unused-argument]
     edit_file = save_file(request.files["file-upload-bulk-edit-upload"],
                           Path(app.config["UPLOAD_FOLDER"]))
 
-    from gn_libs import jobs as gnlibs_jobs
-    from gn_libs import sqlite3
     jobs_db = app.config["ASYNCHRONOUS_JOBS_SQLITE_DB"]
     with sqlite3.connection(jobs_db) as conn:
         job_id = uuid.uuid4()