aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2023-11-30 09:59:14 +0300
committerFrederick Muriuki Muriithi2023-11-30 09:59:14 +0300
commitad7f0b3cf99ec37be96b819dacd927be86df91ff (patch)
tree75e6bb5459617b09aebd5c3481d039caf97b6b9d
parent3b725c7354b185cc748f1d8ebfac6bab5e17b4aa (diff)
downloadgn-uploader-ad7f0b3cf99ec37be96b819dacd927be86df91ff.tar.gz
Handle duplicate dataset creation error
Notify the user when they try to create a new dataset that has the same name as an existing dataset and give them the chance to fix it before continuing.
-rw-r--r--qc_app/dbinsert.py16
-rw-r--r--qc_app/templates/select_dataset.html43
2 files changed, 46 insertions, 13 deletions
diff --git a/qc_app/dbinsert.py b/qc_app/dbinsert.py
index 4711262..ab1c350 100644
--- a/qc_app/dbinsert.py
+++ b/qc_app/dbinsert.py
@@ -255,10 +255,8 @@ def select_dataset():
studyid = form["studyid"]
datasets = datasets_by_study(studyid)
return render_template(
- "select_dataset.html", filename=form["filename"],
- filetype=form["filetype"], totallines=form["totallines"],
- species=form["species"], genechipid=form["genechipid"],
- studyid=studyid, datasets=datasets, avgmethods=averaging_methods(),
+ "select_dataset.html", **{**form, "studyid": studyid},
+ datasets=datasets, avgmethods=averaging_methods(),
datascales=dataset_datascales())
except AssertionError as aserr:
return render_error(f"Missing data: {aserr.args[0]}")
@@ -283,11 +281,19 @@ def create_dataset():
with database_connection() as conn:
with conn.cursor(cursorclass=DictCursor) as cursor:
+ datasetname = form["datasetname"]
+ cursor.execute("SELECT * FROM ProbeSetFreeze WHERE Name=%s",
+ (datasetname,))
+ results = cursor.fetchall()
+ if bool(results):
+ flash("A dataset with that name already exists.",
+ "alert-error")
+ return redirect(url_for("dbinsert.select_dataset"), code=307)
cursor.execute("SELECT MAX(Id) AS last_id FROM ProbeSetFreeze")
new_datasetid = cursor.fetchone()["last_id"] + 1
values = (
new_datasetid, form["studyid"], form["avgid"],
- form.get("datasetname",""), form["datasetname2"],
+ datasetname, form["datasetname2"],
form["datasetfullname"], form["datasetshortname"],
datetime.now().date().strftime("%Y-%m-%d"),
form["datasetpublic"], form["datasetconfidentiality"],
diff --git a/qc_app/templates/select_dataset.html b/qc_app/templates/select_dataset.html
index a21957d..cad6621 100644
--- a/qc_app/templates/select_dataset.html
+++ b/qc_app/templates/select_dataset.html
@@ -66,7 +66,10 @@
<select id="avgid" name="avgid" required="required" class="form-col-2">
<option value="">Select averaging method</option>
{%for method in avgmethods:%}
- <option value="{{method['AvgMethodId']}}">
+ <option value="{{method['AvgMethodId']}}"
+ {%if avgid is defined and method['AvgMethodId'] | int == avgid | int%}
+ selected="selected"
+ {%endif%}>
{{method["Name"]}}
</option>
{%endfor%}
@@ -76,38 +79,60 @@
<fieldset>
<label for="datasetname" class="form-col-1">name:</label>
<input id="datasetname" name="datasetname" type="text"
- class="form-col-2" />
+ class="form-col-2"
+ {%if datasetname is defined %}
+ value="{{datasetname}}"
+ {%endif%} />
</fieldset>
<fieldset>
<label for="datasetname2" class="form-col-1">name 2:</label>
<input id="datasetname2" name="datasetname2" type="text"
- required="required" class="form-col-2" />
+ required="required" class="form-col-2"
+ {%if datasetname2 is defined %}
+ value="{{datasetname2}}"
+ {%endif%} />
</fieldset>
<fieldset>
<label for="datasetfullname" class="form-col-1">full name:</label>
<input id="datasetfullname" name="datasetfullname" type="text"
- required="required" class="form-col-2" />
+ required="required" class="form-col-2"
+ {%if datasetfullname is defined %}
+ value="{{datasetfullname}}"
+ {%endif%} />
</fieldset>
<fieldset>
<label for="datasetshortname" class="form-col-1">short name:</label>
<input id="datasetshortname" name="datasetshortname" type="text"
- required="required" class="form-col-2" />
+ required="required" class="form-col-2"
+ {%if datasetshortname is defined %}
+ value="{{datasetshortname}}"
+ {%endif%} />
</fieldset>
<fieldset>
<label for="datasetpublic" class="form-col-1">public:</label>
<input id="datasetpublic" name="datasetpublic" type="number"
- required="required" min="0" max="2" value="0"
+ required="required" min="0" max="2"
+ {%if datasetpublic is defined %}
+ value="{{datasetpublic | int}}"
+ {%else%}
+ value="0"
+ {%endif%}
class="form-col-2" />
</fieldset>
<fieldset>
<label for="datasetconfidentiality">confidentiality:</label>
<input id="datasetconfidentiality" name="datasetconfidentiality"
- type="number" required="required" min="0" max="2" value="0"
+ type="number" required="required" min="0" max="2"
+ {%if datasetconfidentiality is defined %}
+ value="{{datasetconfidentiality | int}}"
+ {%else%}
+ value="0"
+ {%endif%}
class="form-col-2" />
</fieldset>
@@ -117,7 +142,9 @@
<option value="">None</option>
{%for dscale in datascales:%}
<option value="{{dscale}}"
- {%if dscale == "log2":%}
+ {%if datasetdatascale is defined and dscale == datasetdatascale%}
+ selected="selected"
+ {%elif dscale == "log2":%}
selected="selected"
{%endif%}>
{{dscale}}