aboutsummaryrefslogtreecommitdiff
path: root/uploader/species/models.py
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2024-09-10 16:57:41 -0500
committerFrederick Muriuki Muriithi2024-09-10 16:57:41 -0500
commit83b41616825d5abed8543a744d20cf6e4c6ffa64 (patch)
tree12a6a60687974d26b60da2650d13bcf5e5faa4af /uploader/species/models.py
parent3c8ec9af68d593e7e5eef52aca3d001e22c8e0f7 (diff)
downloadgn-uploader-83b41616825d5abed8543a744d20cf6e4c6ffa64.tar.gz
Require that user selects the family.
Diffstat (limited to 'uploader/species/models.py')
-rw-r--r--uploader/species/models.py36
1 files changed, 24 insertions, 12 deletions
diff --git a/uploader/species/models.py b/uploader/species/models.py
index cea3549..4426b64 100644
--- a/uploader/species/models.py
+++ b/uploader/species/models.py
@@ -46,6 +46,7 @@ def species_by_id(conn: mdb.Connection, speciesid) -> dict:
def save_species(conn: mdb.Connection,
common_name: str,
scientific_name: str,
+ family: str,
taxon_id: Optional[str] = None) -> int:
"""
Save a new species to the database.
@@ -58,20 +59,27 @@ def save_species(conn: mdb.Connection,
scientific_name; The species' scientific name.
"""
genus, species = scientific_name.split(" ")
- species = {
- "common_name": common_name,
- "common_name_lower": common_name.lower(),
- "menu_name": f"{common_name} ({genus[0]}. {species.lower()})",
- "scientific_name": scientific_name,
- "taxon_id": taxon_id
- }
+ families = species_families(conn)
with conn.cursor() as cursor:
+ cursor.execute("SELECT MAX(OrderId) FROM Species")
+ species = {
+ "common_name": common_name,
+ "common_name_lower": common_name.lower(),
+ "menu_name": f"{common_name} ({genus[0]}. {species.lower()})",
+ "scientific_name": scientific_name,
+ "family": family,
+ "family_order": families[family],
+ "taxon_id": taxon_id,
+ "species_order": cursor.fetchone()[0] + 5
+ }
cursor.execute(
"INSERT INTO Species("
- "SpeciesName, Name, MenuName, FullName, TaxonomyId"
+ "SpeciesName, Name, MenuName, FullName, Family, FamilyOrderId, "
+ "TaxonomyId, OrderId"
") VALUES ("
"%(common_name)s, %(common_name_lower)s, %(menu_name)s, "
- "%(scientific_name)s, %(taxon_id)s"
+ "%(scientific_name)s, %(family)s, %(family_order)s, %(taxon_id)s, "
+ "%(species_order)s"
")",
species)
species_id = cursor.lastrowid
@@ -83,9 +91,13 @@ def save_species(conn: mdb.Connection,
}
-def species_families(conn: mdb.Connection) -> tuple:
+def species_families(conn: mdb.Connection) -> dict:
"""Retrieve the families under which species are grouped."""
with conn.cursor(cursorclass=DictCursor) as cursor:
cursor.execute(
- "SELECT DISTINCT(Family) FROM Species WHERE Family IS NOT NULL")
- return tuple(fam["Family"] for fam in cursor.fetchall())
+ "SELECT DISTINCT(Family), FamilyOrderId FROM Species "
+ "WHERE Family IS NOT NULL")
+ return {
+ fam["Family"]: fam["FamilyOrderId"]
+ for fam in cursor.fetchall()
+ }