diff options
Diffstat (limited to 'qc_app/upload/rqtl2.py')
-rw-r--r-- | qc_app/upload/rqtl2.py | 28 |
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), |