diff options
-rw-r--r-- | qc_app/templates/rqtl2/select-population.html | 124 | ||||
-rw-r--r-- | qc_app/upload/rqtl2.py | 17 |
2 files changed, 141 insertions, 0 deletions
diff --git a/qc_app/templates/rqtl2/select-population.html b/qc_app/templates/rqtl2/select-population.html new file mode 100644 index 0000000..3ce9dc8 --- /dev/null +++ b/qc_app/templates/rqtl2/select-population.html @@ -0,0 +1,124 @@ +{%extends "base.html"%} +{%from "flash_messages.html" import flash_messages%} + +{%block title%}Select Grouping/Population{%endblock%} + +{%block contents%} +<h1 class="heading">Select grouping/population</h1> + +<div class="explainer"> + <p>The data is organised in a hierarchical form, beginning with + <em>species</em> at the very top. Under <em>species</em> the data is + organised by <em>population</em>, sometimes referred to as <em>grouping</em>. + (In some really old documents/systems, you might see this referred to as + <em>InbredSet</em>.)</p> + <p>In this section, you get to define what population your data is to be + organised by.</p> +</div> + +<form method="POST" action="{{url_for('samples.select_population')}}"> + <legend class="heading">select grouping/population</legend> + {{flash_messages("error-select-population")}} + + <input type="hidden" name="species_id" value="{{species.SpeciesId}}" /> + <fieldset> + <label for="select:inbredset" class="form-col-1">population</label> + <select id="select:inbredset" + name="inbredset_id" + required="required" + class="form-col-2"> + <option value="">Select a grouping/population</option> + {%for pop in populations%} + <option value="{{pop.InbredSetId}}"> + {{pop.InbredSetName}} ({{pop.FullName}})</option> + {%endfor%} + </select> + <span class="form-input-help">If you are adding data to an already existing + population, simply pick the population from this drop-down selector. If + you cannot find your population from this list, try the form below to + create a new one..</span> + </fieldset> + + <fieldset> + <input type="submit" + value="select population" + class="btn btn-main form-col-2" /> + </fieldset> +</form> + +<p style="color:#FE3535; padding-left:20em; font-weight:bolder;">OR</p> + +<form method="POST" action="{{url_for('samples.create_population')}}"> + <legend class="heading">create new grouping/population</legend> + {{flash_messages("error-create-population")}} + + <input type="hidden" name="species_id" value="{{species.SpeciesId}}" /> + <fieldset> + <legend>mandatory</legend> + <label for="txt:inbredset-name" class="form-col-1">name</label> + <input id="txt:inbredset-name" + name="inbredset_name" + type="text" + required="required" + placeholder="Enter grouping/population name" + class="form-col-2" /> + <span class="form-input-help">This is a short name that identifies the + population. Useful for menus, and quick scanning.</span> + + <label for="txt:" class="form-col-1">full name</label> + <input id="txt:inbredset-fullname" + name="inbredset_fullname" + type="text" + required = "required" + placeholder="Enter the grouping/population's full name" + class="form-col-2" /> + <span class="form-input-help">This can be the same as the name above, or can + be longer. Useful for documentation, and human communication.</span> + </fieldset> + <fieldset> + <legend>Optional</legend> + + <label for="num:public" class="form-col-1">public?</label> + <select id="num:public" + name="public" + class="form-col-2"> + <option value="0">0 - Only accessible to authorised users</option> + <option value="1">1 - Publicly accessible to all users</option> + <option value="2" selected> + 2 - Publicly accessible to all users</option> + </select> + <span class="form-input-help">This determines whether the + population/grouping will appear on the menus for users.</span> + + <label for="txt:inbredset-family" class="form-col-1">family</label> + <input id="txt:inbredset-family" + name="inbredset_family" + type="text" + placeholder="I am not sure what this is about." + class="form-col-2" /> + <span class="form-input-help">I do not currently know what this is about. + This is a failure on my part to figure out what this is and provide a + useful description. Please feel free to remind me.</span> + + <label for="txtarea:" class="form-col-1">Description</label> + <textarea id="txtarea:description" + name="description" + rows="5" + placeholder="Enter a description of this grouping/population" + class="form-col-2"></textarea> + <span class="form-input-help">A long-form description of what the population + consists of. Useful for humans.</span> + </fieldset> + + <fieldset> + <input type="submit" + value="create grouping/population" + class="btn btn-main form-col-2" /> + </fieldset> +</form> + +{%endblock%} + + +{%block javascript%} +{%endblock%} diff --git a/qc_app/upload/rqtl2.py b/qc_app/upload/rqtl2.py index e54f141..06edfee 100644 --- a/qc_app/upload/rqtl2.py +++ b/qc_app/upload/rqtl2.py @@ -29,3 +29,20 @@ def select_species(): "upload.rqtl2.select_population", species_id=species_id)) flash("Invalid species or no species selected!", "alert-error error-rqtl2") return redirect(url_for("upload.rqtl2.select_species")) + +@rqtl2.route("/upload/species/<int:species_id>/select-population", + methods=["GET", "POST"]) +def select_population(species_id: int): + """Select/Create the population to organise data under.""" + species = with_db_connection(lambda conn: species_by_id(conn, species_id)) + if not bool(species): + flash("Invalid species selected!", "alert-error error-rqtl2") + return redirect(url_for("upload.rqtl2.select_species")) + + if request.method == "GET": + return render_template( + "rqtl2/select-population.html", + species=species, + populations=groups_by_species(species_id)) + + return "WOULD PROCESS DATA" |