about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2025-02-17 10:50:57 -0600
committerFrederick Muriuki Muriithi2025-02-17 10:50:57 -0600
commitb32c9b3988ee5600c12b3dbded51a4fcc6754237 (patch)
tree13c6e2995ba2d125b425ebceaba680b50927c562
parentd8b58c3bf6fb98fa1e8842a5e59c290e11e8b3c3 (diff)
downloadgn-uploader-b32c9b3988ee5600c12b3dbded51a4fcc6754237.tar.gz
Allow a subspecies to be provided as part of the scientific name.
-rw-r--r--uploader/species/models.py6
-rw-r--r--uploader/species/views.py2
2 files changed, 5 insertions, 3 deletions
diff --git a/uploader/species/models.py b/uploader/species/models.py
index 51f941c..078e1d0 100644
--- a/uploader/species/models.py
+++ b/uploader/species/models.py
@@ -58,7 +58,8 @@ def save_species(conn: mdb.Connection,
     common_name: The species' common name.
     scientific_name; The species' scientific name.
     """
-    genus, species_name = scientific_name.split(" ")
+    genus, *species_name = scientific_name.split(" ")
+    species_name = " ".join(species_name)
     families = species_families(conn)
     with conn.cursor() as cursor:
         cursor.execute("SELECT MAX(OrderId) FROM Species")
@@ -116,7 +117,8 @@ def update_species(# pylint: disable=[too-many-arguments]
     species_order: The ordering of this species in relation to others
     """
     with conn.cursor(cursorclass=DictCursor) as cursor:
-        genus, species_name = scientific_name.split(" ")
+        genus, *species_name = scientific_name.split(" ")
+        species_name = " ".join(species_name)
         species = {
             "species_id": species_id,
             "common_name": common_name,
diff --git a/uploader/species/views.py b/uploader/species/views.py
index fee5c75..a7e4d59 100644
--- a/uploader/species/views.py
+++ b/uploader/species/views.py
@@ -79,7 +79,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