From 3038c5166aad408d7255f83668b78d635878d3d3 Mon Sep 17 00:00:00 2001 From: Frederick Muriuki Muriithi Date: Fri, 8 Jul 2022 10:39:19 +0300 Subject: Implement select study Implement the select study UI --- qc_app/dbinsert.py | 36 +++++++++- qc_app/static/css/styles.css | 8 ++- qc_app/static/css/two-column-with-separator.css | 27 ++++++++ qc_app/templates/select_platform.html | 2 +- qc_app/templates/select_study.html | 88 +++++++++++++++++++++++++ 5 files changed, 158 insertions(+), 3 deletions(-) create mode 100644 qc_app/static/css/two-column-with-separator.css create mode 100644 qc_app/templates/select_study.html (limited to 'qc_app') diff --git a/qc_app/dbinsert.py b/qc_app/dbinsert.py index ea47806..e506175 100644 --- a/qc_app/dbinsert.py +++ b/qc_app/dbinsert.py @@ -53,6 +53,23 @@ def genechips(): return {} +def studies_by_species_and_platform(speciesid:int, genechipid:int) -> tuple: + "Retrieve the studies by the related species and gene platform" + with database_connection() as conn: + with conn.cursor(cursorclass=DictCursor) as cursor: + query = ( + "SELECT Species.SpeciesId, ProbeFreeze.* " + "FROM Species INNER JOIN InbredSet " + "ON Species.SpeciesId=InbredSet.SpeciesId " + "INNER JOIN ProbeFreeze " + "ON InbredSet.InbredSetId=ProbeFreeze.InbredSetId " + "WHERE Species.SpeciesId = %s " + "AND ProbeFreeze.ChipId = %s") + cursor.execute(query, (speciesid, genechipid)) + return tuple(cursor.fetchall()) + + return tuple() + @dbinsertbp.route("/platform", methods=["POST"]) def select_platform(): "Select the platform (GeneChipId) used for the data." @@ -76,7 +93,24 @@ def select_platform(): @dbinsertbp.route("/study", methods=["POST"]) def select_study(): - return "Not implemented yet" + "View to select/create the study (ProbeFreeze) associated with the data." + form = request.form + try: + assert form.get("filename"), "filename" + assert form.get("filetype"), "filetype" + assert form.get("species"), "species" + assert form.get("genechipid"), "platform" + + speciesid = form["species"] + genechipid = form["genechipid"] + + the_studies = studies_by_species_and_platform(speciesid, genechipid) + return render_template( + "select_study.html", filename=form["filename"], + filetype=form["filetype"], species=speciesid, genechipid=genechipid, + studies=the_studies) + except AssertionError as aserr: + return render_error(f"Missing data: {aserr.args[0]}") @dbinsertbp.route("/select-dataset", methods=["POST"]) def select_dataset(): diff --git a/qc_app/static/css/styles.css b/qc_app/static/css/styles.css index d27952a..a42ffb0 100644 --- a/qc_app/static/css/styles.css +++ b/qc_app/static/css/styles.css @@ -117,10 +117,16 @@ fieldset { .form-col-2 { grid-column: 2 / 3; - width: 20%; } input[disabled="true"],input[disabled="disabled"] { border-color: #878787; background-color: #A9A9A9; } + +form legend { + padding-left: 3em; + text-transform: capitalize; + font-weight: bolder; + line-height: 2em; +} diff --git a/qc_app/static/css/two-column-with-separator.css b/qc_app/static/css/two-column-with-separator.css new file mode 100644 index 0000000..b6efd46 --- /dev/null +++ b/qc_app/static/css/two-column-with-separator.css @@ -0,0 +1,27 @@ +.two-column-with-separator { + display: grid; + grid-template-columns: 9fr 1fr 9fr; +} + +.two-col-sep-col1 { + grid-column: 1 / 2; +} + +.two-col-sep-separator { + grid-column: 2 / 3; + text-align: center; + color: #FE3535; + font-weight: bolder; +} + +.two-col-sep-col2 { + grid-column: 3 / 4; +} + +.two-col-sep-col1, .two-col-sep-col2 { + border-style: solid; + border-color: #FE3535; + border-width: 1px; + border-radius: 2em; + padding: 2em 3em 2em 3em; +} diff --git a/qc_app/templates/select_platform.html b/qc_app/templates/select_platform.html index f8db736..131003d 100644 --- a/qc_app/templates/select_platform.html +++ b/qc_app/templates/select_platform.html @@ -3,7 +3,7 @@ {%block title%}Select Dataset{%endblock%} {%block contents%} -