aboutsummaryrefslogtreecommitdiff
path: root/uploader/species/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'uploader/species/views.py')
-rw-r--r--uploader/species/views.py17
1 files changed, 14 insertions, 3 deletions
diff --git a/uploader/species/views.py b/uploader/species/views.py
index 10715a5..9ad5254 100644
--- a/uploader/species/views.py
+++ b/uploader/species/views.py
@@ -1,6 +1,8 @@
"""Endpoints handling species."""
from pymonad.either import Left, Right, Either
+from gn_libs.mysqldb import database_connection
from flask import (flash,
+ escape,
request,
url_for,
redirect,
@@ -10,7 +12,6 @@ from flask import (flash,
from uploader.population import popbp
from uploader.platforms import platformsbp
from uploader.ui import make_template_renderer
-from uploader.db_utils import database_connection
from uploader.oauth2.client import oauth2_get, oauth2_post
from uploader.authorisation import require_login, require_token
from uploader.datautils import order_by_family, enumerate_sequence
@@ -62,6 +63,8 @@ def create_species():
if request.method == "GET":
return render_template("species/create-species.html",
families=species_families(conn),
+ return_to=(
+ request.args.get("return_to") or ""),
activelink="create-species")
error = False
@@ -79,7 +82,7 @@ def create_species():
error = True
parts = tuple(name.strip() for name in scientific_name.split(" "))
- if len(parts) != 2 or not all(bool(name) for name in parts):
+ if (len(parts) != 2 and len(parts) != 3) or not all(bool(name) for name in parts):
flash("The scientific name you provided is invalid.", "alert-danger")
error = True
@@ -113,7 +116,15 @@ def create_species():
species = save_species(
conn, common_name, scientific_name, family, taxon_id)
- flash("Species saved successfully!", "alert-success")
+ flash(
+ f"You have successfully added species "
+ f"'{escape(species['scientific_name'])} "
+ f"({escape(species['common_name'])})'.",
+ "alert-success")
+
+ return_to = request.form.get("return_to").strip()
+ if return_to:
+ return redirect(url_for(return_to, species_id=species["species_id"]))
return redirect(url_for("species.view_species", species_id=species["species_id"]))