about summary refs log tree commit diff
path: root/qc_app/upload
diff options
context:
space:
mode:
Diffstat (limited to 'qc_app/upload')
-rw-r--r--qc_app/upload/rqtl2.py28
1 files changed, 18 insertions, 10 deletions
diff --git a/qc_app/upload/rqtl2.py b/qc_app/upload/rqtl2.py
index 860a6a9..e0fb40c 100644
--- a/qc_app/upload/rqtl2.py
+++ b/qc_app/upload/rqtl2.py
@@ -600,29 +600,37 @@ def select_probeset_dataset(species_id: int, population_id: int):
              methods=["POST"])
 def create_probeset_study(species_id: int, population_id: int):
     """Create a new probeset study."""
+    errorclasses = "alert-error error-rqtl2 error-rqtl2-create-probeset-study"
     with database_connection(app.config["SQL_URI"]) as conn:
         def __thunk__():
             form = request.form
-            select_study_page = redirect(
-                url_for("upload.rqtl2.select_probeset_study",
+            dataset_info_page = redirect(
+                url_for("upload.rqtl2.select_dataset_info",
                         species_id=species_id,
                         population_id=population_id),
                 code=307)
 
             if not (bool(form.get("platformid")) and
                     bool(platform_by_id(conn, int(form["platformid"])))):
-                flash("Invalid platform selected.", "alert-error error-rqtl2")
-                return select_study_page
+                flash("Invalid platform selected.", errorclasses)
+                return dataset_info_page
 
             if not (bool(form.get("tissueid")) and
                     bool(tissue_by_id(conn, int(form["tissueid"])))):
-                flash("Invalid tissue selected.", "alert-error error-rqtl2")
-                return select_study_page
+                flash("Invalid tissue selected.", errorclasses)
+                return dataset_info_page
 
-            study = probeset_create_study(
-                conn, population_id, int(form["platformid"]), int(form["tissueid"]),
-                form["studyname"], form.get("studyfullname") or "",
-                form.get("studyshortname") or "")
+            studyname = form["studyname"]
+            try:
+                study = probeset_create_study(
+                    conn, population_id, int(form["platformid"]), int(form["tissueid"]),
+                    studyname, form.get("studyfullname") or "",
+                    form.get("studyshortname") or "")
+            except mdb.IntegrityError as _ierr:
+                flash(f"ProbeSet study with name '{escape(studyname)}' already "
+                      "exists.",
+                      errorclasses)
+                return dataset_info_page
             return render_template(
                 "rqtl2/create-probe-study-success.html",
                 species=species_by_id(conn, species_id),