"""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, url_for, redirect, Blueprint, current_app as app, send_from_directory) from uploader.ui import make_template_renderer from uploader.oauth2.client import user_logged_in 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") if not bool(streamlined_ui):# TODO: Remove this section return render_template( "index.html" if user_logged_in() else "login.html", gn2server_intro=urljoin(app.config["GN2_SERVER_URL"], "/intro")) 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( "sui-index.html",# TODO: Rename: sui-index.html, sui_base.html gn2server_intro=urljoin(app.config["GN2_SERVER_URL"], "/intro"), species=all_species(conn), streamlined_ui=streamlined_ui) 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"], streamlined_ui=streamlined_ui)) def appenv(): """Get app's guix environment path.""" return os.environ.get("GN_UPLOADER_ENVIRONMENT") @base.route("/bootstrap/") def bootstrap(filename): """Fetch bootstrap files.""" return send_from_directory(appenv(), f"share/web/bootstrap/{filename}") @base.route("/jquery/") def jquery(filename): """Fetch jquery files.""" return send_from_directory( appenv(), f"share/genenetwork2/javascript/jquery/{filename}") @base.route("/datatables/") def datatables(filename): """Fetch DataTables files.""" return send_from_directory( appenv(), f"share/genenetwork2/javascript/DataTables/{filename}") @base.route("/datatables-extensions/") def datatables_extensions(filename): """Fetch DataTables files.""" return send_from_directory( appenv(), f"share/genenetwork2/javascript/DataTablesExtensions/{filename}") @base.route("/node-modules/") def node_modules(filename): """Fetch node-js modules.""" return send_from_directory( appenv(), f"lib/node_modules/{filename}")