From 5dfe0043c3bd0562d14c064b5315829fb42b89d1 Mon Sep 17 00:00:00 2001 From: maniarathi Date: Sat, 22 Aug 2020 10:04:40 -0700 Subject: [PATCH] Serves static assets from each dataset root URL and switch the publicPath to be a relative path. (#1786) --- .../webpack/webpack.config.shared.js | 2 +- client/src/components/menubar/authButtons.js | 2 +- server/app/app.py | 17 +++++++++++++++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/client/configuration/webpack/webpack.config.shared.js b/client/configuration/webpack/webpack.config.shared.js index 2a8fcfdd..649844a9 100644 --- a/client/configuration/webpack/webpack.config.shared.js +++ b/client/configuration/webpack/webpack.config.shared.js @@ -7,7 +7,7 @@ const ScriptExtHtmlWebpackPlugin = require("script-ext-html-webpack-plugin"); const src = path.resolve("src"); const nodeModules = path.resolve("node_modules"); -const publicPath = "/"; +const publicPath = ""; const rawObsoleteHTMLTemplate = fs.readFileSync( `${__dirname}/obsoleteHTMLTemplate.html`, diff --git a/client/src/components/menubar/authButtons.js b/client/src/components/menubar/authButtons.js index 9323d1e3..7eb4c4c0 100644 --- a/client/src/components/menubar/authButtons.js +++ b/client/src/components/menubar/authButtons.js @@ -19,7 +19,7 @@ const Auth = React.memo((props) => { type="button" data-testid="auth-button" disabled={false} - icon={!userinfo["is_authenticated"] ? "log-in" : "log-out"} + icon={!userinfo.is_authenticated ? "log-in" : "log-out"} href={!userinfo.is_authenticated ? auth.login : auth.logout} > {!userinfo.is_authenticated ? "Log In" : "Log Out"} diff --git a/server/app/app.py b/server/app/app.py index 06612a1c..c84187df 100644 --- a/server/app/app.py +++ b/server/app/app.py @@ -3,7 +3,8 @@ import logging from functools import wraps from http import HTTPStatus -from flask import Flask, redirect, current_app, make_response, render_template, abort, Blueprint, request +from flask import Flask, redirect, current_app, make_response, render_template, abort, Blueprint, request, \ + send_from_directory from flask_restful import Api, Resource from server_timing import Timing as ServerTiming @@ -335,7 +336,7 @@ class Server: pass def __init__(self, app_config): - self.app = Flask(__name__, static_folder="../common/web/static") + self.app = Flask(__name__, static_folder=None) self._before_adding_routes(self.app, app_config) self.app.json_encoder = Float32JSONEncoder server_config = app_config.server_config @@ -369,11 +370,23 @@ class Server: lambda dataset, url_dataroot=url_dataroot: dataset_index(url_dataroot, dataset), methods=["GET"], ) + self.app.add_url_rule( + f"/{url_dataroot}//static/", + f"static_assets_{url_dataroot}", + view_func=lambda dataset, filename: send_from_directory("../common/web/static", filename), + methods=["GET"] + ) else: bp_api = Blueprint("api", __name__, url_prefix=api_version) resources = get_api_resources(bp_api) self.app.register_blueprint(resources.blueprint) + self.app.add_url_rule( + "/static/", + "static_assets", + view_func=lambda filename: send_from_directory("../common/web/static", filename), + methods=["GET"] + ) self.app.matrix_data_cache_manager = server_config.matrix_data_cache_manager self.app.app_config = app_config