From 6c611f55ddc7ae0489ca5f1d77a728ceefac43d8 Mon Sep 17 00:00:00 2001 From: Alok Saldanha Date: Tue, 7 Jan 2020 08:50:39 -0500 Subject: [PATCH] #14 redirect prior to returning loading screen --- cellxgene_gateway/cache_entry.py | 12 ++++++++---- cellxgene_gateway/gateway.py | 8 +------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/cellxgene_gateway/cache_entry.py b/cellxgene_gateway/cache_entry.py index bc45a78..2b1a429 100644 --- a/cellxgene_gateway/cache_entry.py +++ b/cellxgene_gateway/cache_entry.py @@ -8,8 +8,9 @@ # the specific language governing permissions and limitations under the License. import psutil import logging +import datetime -from flask import make_response, request +from flask import make_response, request, render_template from requests import get, post, put from cellxgene_gateway import env @@ -92,17 +93,20 @@ class CacheEntry: self.status = "terminated" def serve_content(self, path): - dataset = self.key.dataset - gateway_basepath = ( f"{env.external_protocol}://{env.external_host}/view/{self.key.pathpart}/" ) subpath = path[len(self.key.pathpart) :] # noqa: E203 - + if len(subpath) == 0: r = make_response(f"Redirect to {gateway_basepath}\n", 301) r.headers["location"] = gateway_basepath+querystring() return r + elif self.status == "loading": + launch_time = datetime.datetime.fromtimestamp(self.launchtime) + return render_template( + "loading.html", launchtime=launch_time, all_output=self.all_output + ) port = self.port cellxgene_basepath = f"http://127.0.0.1:{port}" diff --git a/cellxgene_gateway/gateway.py b/cellxgene_gateway/gateway.py index b3d34ec..272f7cd 100644 --- a/cellxgene_gateway/gateway.py +++ b/cellxgene_gateway/gateway.py @@ -8,7 +8,6 @@ # the specific language governing permissions and limitations under the License. # import BaseHTTPServer -import datetime import os import logging from threading import Thread, Lock @@ -204,13 +203,8 @@ def do_view(path): match.timestamp = current_time_stamp() - if match.status == "loaded": + if match.status == "loaded" or match.status == "loading": return match.serve_content(path) - elif match.status == "loading": - launch_time = datetime.datetime.fromtimestamp(match.launchtime) - return render_template( - "loading.html", launchtime=launch_time, all_output=match.all_output - ) elif match.status == "error": raise ProcessException.from_cache_entry(match)