forked from Ugric/Komodo-Hub
66 lines
2.2 KiB
Python
66 lines
2.2 KiB
Python
from flask import render_template, Blueprint, request, redirect, url_for, flash, g
|
|
from database.db_commands import (
|
|
add_species,
|
|
delete_species,
|
|
get_species_by_name,
|
|
get_species_by_id,
|
|
)
|
|
import os
|
|
import uuid
|
|
|
|
page = Blueprint("species_portal", __name__, url_prefix="/species/portal")
|
|
|
|
|
|
@page.route("/")
|
|
def portal():
|
|
if not g.user or g.user["account_type"] != "admin":
|
|
return "access denied", 401
|
|
return render_template("species_portal/species_portal.jinja")
|
|
|
|
|
|
@page.route("/", methods=["POST"])
|
|
def add_species_to_database():
|
|
if not g.user or g.user["account_type"] != "admin":
|
|
return "access denied", 401
|
|
try:
|
|
eng_name = request.form["eng_name"].title()
|
|
latin_name = request.form["latin_name"].capitalize()
|
|
main_text = request.form["main_text"]
|
|
category = request.form["category"].capitalize()
|
|
extinction_risk = request.form["extinction_risk"]
|
|
species_image = request.files["species_image"]
|
|
image_id = ""
|
|
if species_image:
|
|
image_id = str(uuid.uuid4())
|
|
species_image.save(f"database/images/{image_id}")
|
|
print(category, extinction_risk)
|
|
add_species(
|
|
eng_name, latin_name, main_text, category, extinction_risk, image_id
|
|
)
|
|
|
|
return render_template(
|
|
"species_portal/species_portal_success.jinja",
|
|
eng_name=eng_name,
|
|
)
|
|
except ValueError as error_information:
|
|
species_to_edit = get_species_by_name(request.form["eng_name"].title())
|
|
species_id = species_to_edit["species_id"]
|
|
flash(
|
|
f"{species_to_edit['species_english']} already exists. You have been redirected to the editor to update it.",
|
|
"info",
|
|
)
|
|
return redirect(url_for("species_editor.edit_species", species_id=species_id))
|
|
except Exception as error_information:
|
|
return render_template(
|
|
"species_portal/species_portal_failed.jinja",
|
|
error_information=error_information,
|
|
)
|
|
|
|
|
|
@page.route("/<eng_name>")
|
|
def portal_success(eng_name):
|
|
return render_template(
|
|
"species_portal/species_portal_success.jinja",
|
|
eng_name=eng_name,
|
|
)
|