"""Basic routes required for all pages""" import os from urllib.parse import urljoin from flask import (Blueprint, current_app as app, send_from_directory) from uploader.ui import make_template_renderer from uploader.oauth2.client import user_logged_in base = Blueprint("base", __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""" return render_template("index.html" if user_logged_in() else "login.html", gn2server_intro=urljoin(app.config["GN2_SERVER_URL"], "/intro")) 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/genenetwork2/javascript/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("/node-modules/<path:filename>") def node_modules(filename): """Fetch node-js modules.""" return send_from_directory( appenv(), f"lib/node_modules/{filename}")