From f6096e430e2bb914225823a1953c109bad89d755 Mon Sep 17 00:00:00 2001 From: Frederick Muriuki Muriithi Date: Thu, 12 Sep 2024 12:57:50 -0500 Subject: Save the updated species details. --- uploader/species/models.py | 47 ++++++++++++++++++++++++++++ uploader/species/views.py | 17 +++++++--- uploader/templates/species/edit-species.html | 3 +- 3 files changed, 62 insertions(+), 5 deletions(-) diff --git a/uploader/species/models.py b/uploader/species/models.py index 4426b64..1abed6d 100644 --- a/uploader/species/models.py +++ b/uploader/species/models.py @@ -91,6 +91,53 @@ def save_species(conn: mdb.Connection, } +def update_species(conn: mdb.Connection, + species_id: int, + common_name: str, + scientific_name: str, + family: str, + family_order: int, + species_order: int): + """Update a species' details. + + Parameters + ---------- + conn: A connection to the MariaDB database. + species_id: The species identifier + + Key-Word Arguments + ------------------ + common_name: A layman's name for the species + scientific_name: A binomial nomenclature name for the species + family: The grouping under which the species falls + family_order: The ordering for the "family" above + species_order: The ordering of this species in relation to others + """ + with conn.cursor(cursorclass=DictCursor) as cursor: + genus, species = scientific_name.split(" ") + species = { + "species_id": species_id, + "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": family_order, + "species_order": species_order + } + cursor.execute( + "UPDATE Species SET " + "SpeciesName=%(common_name)s, " + "Name=%(common_name_lower)s, " + "MenuName=%(menu_name)s, " + "FullName=%(scientific_name)s, " + "Family=%(family)s, " + "FamilyOrderId=%(family_order)s, " + "OrderId=%(species_order)s " + "WHERE Id=%(species_id)s", + species) + + def species_families(conn: mdb.Connection) -> dict: """Retrieve the families under which species are grouped.""" with conn.cursor(cursorclass=DictCursor) as cursor: diff --git a/uploader/species/views.py b/uploader/species/views.py index f39ca98..55b0dd3 100644 --- a/uploader/species/views.py +++ b/uploader/species/views.py @@ -14,7 +14,11 @@ 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 .models import all_species, save_species, species_by_id, species_families +from .models import (all_species, + save_species, + species_by_id, + update_species, + species_families) speciesbp = Blueprint("species", __name__) @@ -177,9 +181,14 @@ def edit_species_extra(token: dict, species_id: int):# pylint: disable=[unused-a ).either(__failure__, lambda res: res) if bool(species) and request.method == "POST": - flash("We would have edited the species, but the feature is not " - "currently implemented …", - "alert-danger") + update_species(conn, + species_id, + request.form["species_name"], + request.form["species_fullname"], + request.form["species_family"], + int(request.form["species_familyorderid"]), + int(request.form["species_orderid"])) + flash("Updated species successfully.", "alert-success") return redirect(url_for("species.edit_species_extra", species_id=species_id)) diff --git a/uploader/templates/species/edit-species.html b/uploader/templates/species/edit-species.html index 6827751..5a26455 100644 --- a/uploader/templates/species/edit-species.html +++ b/uploader/templates/species/edit-species.html @@ -107,6 +107,7 @@ id="txt-species-familyorderid" name="species_familyorderid" value="{{species.FamilyOrderId}}" + required="required" class="form-control" /> This is a number that determines the order of the "Family" groupings @@ -121,7 +122,7 @@ This integer value determines the order of the species in relation to -- cgit v1.2.3