From ea187f48e047561cba60dd76a367346522a589ba Mon Sep 17 00:00:00 2001 From: Charlotte Weaver Date: Mon, 22 Apr 2019 12:30:57 -0700 Subject: [PATCH] add scripts from cli (#680) * add scripts from cli * add warning when including scripts * flake8 fixes * confirm scripts injection --- client/index_template.html | 55 +++++++++++++++++++++----------------- server/app/web/webapp.py | 3 ++- server/cli/launch.py | 48 ++++++++++++++++++++++++--------- 3 files changed, 68 insertions(+), 38 deletions(-) diff --git a/client/index_template.html b/client/index_template.html index fb28018f..0d9cfaa9 100644 --- a/client/index_template.html +++ b/client/index_template.html @@ -1,35 +1,42 @@ - + cellxgene - - - - -
- + + + + + +
+{% for script in SCRIPTS %} + +{% endfor %} + diff --git a/server/app/web/webapp.py b/server/app/web/webapp.py index c2b51911..8af94640 100644 --- a/server/app/web/webapp.py +++ b/server/app/web/webapp.py @@ -8,7 +8,8 @@ bp = Blueprint("webapp", __name__, template_folder="templates") @bp.route("/") def index(): dataset_title = current_app.config["DATASET_TITLE"] - return render_template("index.html", datasetTitle=dataset_title) + scripts = current_app.config["SCRIPTS"] + return render_template("index.html", datasetTitle=dataset_title, SCRIPTS=scripts) @bp.route("/favicon.png") diff --git a/server/cli/launch.py b/server/cli/launch.py index 779c95c1..9dc03977 100644 --- a/server/cli/launch.py +++ b/server/cli/launch.py @@ -66,20 +66,28 @@ from server.app.util.utils import custom_format_warning show_default=True, help="Relative expression cutoff used when selecting top N differentially expressed genes", ) +@click.option( + "--scripts", + default=[], + multiple=True, + help="Additional script files to include in html page", + show_default=True, +) def launch( - data, - layout, - diffexp, - title, - verbose, - debug, - obs_names, - var_names, - open_browser, - port, - host, - max_category_items, - diffexp_lfc_cutoff, + data, + layout, + diffexp, + title, + verbose, + debug, + obs_names, + var_names, + open_browser, + port, + host, + max_category_items, + diffexp_lfc_cutoff, + scripts, ): """Launch the cellxgene data viewer. This web app lets you explore single-cell expression data. @@ -106,6 +114,19 @@ def launch( else: warnings.formatwarning = custom_format_warning + if scripts: + click.echo(r""" +/ / /\ \ \__ _ _ __ _ __ (_)_ __ __ _ +\ \/ \/ / _` | '__| '_ \| | '_ \ / _` | + \ /\ / (_| | | | | | | | | | | (_| | + \/ \/ \__,_|_| |_| |_|_|_| |_|\__, | + |___/ +The --scripts flag is intended for developers to include google analytics etc. You could be opening yourself to a +security risk by including the --scripts flag. Make sure you trust the scripts that you are including. + """) + scripts_pretty = ", ".join(scripts) + click.confirm(f"Are you sure you want to inject these scripts: {scripts_pretty}?", abort=True) + if not verbose: sys.tracebacklimit = 0 @@ -121,6 +142,7 @@ def launch( app = server.create_app() app.config.update(DATASET_TITLE=title) + app.config.update(SCRIPTS=scripts) if not verbose: log = logging.getLogger("werkzeug")