diff options
Diffstat (limited to 'uploader/base_routes.py')
| -rw-r--r-- | uploader/base_routes.py | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/uploader/base_routes.py b/uploader/base_routes.py new file mode 100644 index 0000000..72a8402 --- /dev/null +++ b/uploader/base_routes.py @@ -0,0 +1,89 @@ +"""Basic routes required for all pages""" +import os +import logging +from urllib.parse import urljoin + +from gn_libs.mysqldb import database_connection +from flask import (flash, + request, + redirect, + Blueprint, + current_app as app, + send_from_directory) + +from uploader.flask_extensions import url_for +from uploader.ui import make_template_renderer +from uploader.species.models import all_species, species_by_id + +base = Blueprint("base", __name__) +logger = logging.getLogger(__name__) +render_template = make_template_renderer("home") + + +@base.route("/favicon.ico", methods=["GET"]) +def favicon(): + """Return the favicon.""" + return send_from_directory(os.path.join(app.root_path, "static"), + "images/CITGLogo.png", + mimetype="image/png") + + +@base.route("/", methods=["GET"]) +def index(): + """Load the landing page""" + streamlined_ui = request.args.get("streamlined_ui") + with database_connection(app.config["SQL_URI"]) as conn: + print("We found a species ID. Processing...") + if not bool(request.args.get("species_id")): + return render_template( + "index.html", + gn2server_intro=urljoin(app.config["GN2_SERVER_URL"], "/intro"), + species=all_species(conn), + view_under_construction=request.args.get( + "view_under_construction", False)) + + species = species_by_id(conn, request.args.get("species_id")) + if not bool(species): + flash("Selected species was not found!", "alert alert-danger") + return redirect(url_for("base.index", streamlined_ui=streamlined_ui)) + + return redirect(url_for("species.view_species", + species_id=species["SpeciesId"])) + + +def appenv(): + """Get app's guix environment path.""" + return os.environ.get("GN_UPLOADER_ENVIRONMENT") + +@base.route("/bootstrap/<path:filename>") +def bootstrap(filename): + """Fetch bootstrap files.""" + return send_from_directory(appenv(), f"share/web/bootstrap/{filename}") + + + +@base.route("/jquery/<path:filename>") +def jquery(filename): + """Fetch jquery files.""" + return send_from_directory( + appenv(), f"share/genenetwork2/javascript/jquery/{filename}") + + +@base.route("/datatables/<path:filename>") +def datatables(filename): + """Fetch DataTables files.""" + return send_from_directory( + appenv(), f"share/genenetwork2/javascript/DataTables/{filename}") + +@base.route("/datatables-extensions/<path:filename>") +def datatables_extensions(filename): + """Fetch DataTables files.""" + return send_from_directory( + appenv(), f"share/genenetwork2/javascript/DataTablesExtensions/{filename}") + + +@base.route("/node-modules/<path:filename>") +def node_modules(filename): + """Fetch node-js modules.""" + return send_from_directory( + appenv(), f"lib/node_modules/{filename}") |
