about summary refs log tree commit diff
path: root/uploader/base_routes.py
diff options
context:
space:
mode:
Diffstat (limited to 'uploader/base_routes.py')
-rw-r--r--uploader/base_routes.py89
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}")