mirror of
https://github.com/Novartis/cellxgene-gateway.git
synced 2026-10-09 08:08:11 +08:00
#22 blackened code
This commit is contained in:
@@ -38,11 +38,15 @@ from cellxgene_gateway.path_util import get_key
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
|
||||
def _force_https(app):
|
||||
def wrapper(environ, start_response):
|
||||
environ['wsgi.url_scheme'] = env.external_protocol
|
||||
environ["wsgi.url_scheme"] = env.external_protocol
|
||||
return app(environ, start_response)
|
||||
|
||||
return wrapper
|
||||
|
||||
|
||||
app.wsgi_app = _force_https(app.wsgi_app)
|
||||
|
||||
cache = BackendCache()
|
||||
@@ -114,6 +118,7 @@ def index():
|
||||
enable_upload=env.enable_upload,
|
||||
)
|
||||
|
||||
|
||||
def make_user():
|
||||
dir_name = request.form["directory"]
|
||||
|
||||
@@ -135,13 +140,17 @@ def upload_file():
|
||||
upload_dir = request.form["path"]
|
||||
|
||||
full_upload_path = os.path.join(env.cellxgene_data, upload_dir)
|
||||
if is_subdir(full_upload_path, env.cellxgene_data) and os.path.isdir(full_upload_path):
|
||||
if is_subdir(full_upload_path, env.cellxgene_data) and os.path.isdir(
|
||||
full_upload_path
|
||||
):
|
||||
if request.method == "POST":
|
||||
if "file" in request.files:
|
||||
f = request.files["file"]
|
||||
if f and f.filename.endswith(".h5ad"):
|
||||
f.save(
|
||||
os.path.join(full_upload_path, secure_filename(f.filename))
|
||||
os.path.join(
|
||||
full_upload_path, secure_filename(f.filename)
|
||||
)
|
||||
)
|
||||
return redirect("/filecrawl.html", code=302)
|
||||
else:
|
||||
@@ -163,15 +172,20 @@ def upload_file():
|
||||
|
||||
|
||||
if env.enable_upload:
|
||||
app.add_url_rule('/make_user', 'make_user', make_user, methods=["POST"])
|
||||
app.add_url_rule('/make_subdir', 'make_subdir', make_subdir, methods=["POST"])
|
||||
app.add_url_rule('/upload_file', 'upload_file', upload_file, methods=["POST"])
|
||||
app.add_url_rule("/make_user", "make_user", make_user, methods=["POST"])
|
||||
app.add_url_rule(
|
||||
"/make_subdir", "make_subdir", make_subdir, methods=["POST"]
|
||||
)
|
||||
app.add_url_rule(
|
||||
"/upload_file", "upload_file", upload_file, methods=["POST"]
|
||||
)
|
||||
|
||||
|
||||
def set_no_cache(resp):
|
||||
resp.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
|
||||
resp.headers["Pragma"] = "no-cache"
|
||||
resp.headers["Expires"] = "0"
|
||||
resp.headers['Cache-Control'] = 'public, max-age=0'
|
||||
resp.headers["Cache-Control"] = "public, max-age=0"
|
||||
return resp
|
||||
|
||||
|
||||
@@ -179,19 +193,23 @@ def set_no_cache(resp):
|
||||
def filecrawl():
|
||||
entries = recurse_dir(env.cellxgene_data)
|
||||
rendered_html = render_entries(entries)
|
||||
resp = make_response(render_template(
|
||||
"filecrawl.html",
|
||||
extra_scripts=get_extra_scripts(),
|
||||
rendered_html=rendered_html,
|
||||
))
|
||||
resp = make_response(
|
||||
render_template(
|
||||
"filecrawl.html",
|
||||
extra_scripts=get_extra_scripts(),
|
||||
rendered_html=rendered_html,
|
||||
)
|
||||
)
|
||||
return set_no_cache(resp)
|
||||
|
||||
|
||||
@app.route("/filecrawl/<path:path>")
|
||||
def do_filecrawl(path):
|
||||
filecrawl_path = os.path.join(env.cellxgene_data, path)
|
||||
if not os.path.isdir(filecrawl_path):
|
||||
raise CellxgeneException(
|
||||
"Path is not directory: " + filecrawl_path, status.HTTP_400_BAD_REQUEST
|
||||
"Path is not directory: " + filecrawl_path,
|
||||
status.HTTP_400_BAD_REQUEST,
|
||||
)
|
||||
entries = recurse_dir(filecrawl_path)
|
||||
rendered_html = render_entries(entries)
|
||||
@@ -202,11 +220,16 @@ def do_filecrawl(path):
|
||||
path=path,
|
||||
)
|
||||
|
||||
|
||||
entry_lock = Lock()
|
||||
|
||||
|
||||
@app.route("/view/<path:path>", methods=["GET", "PUT", "POST"])
|
||||
def do_view(path):
|
||||
key = get_key(path)
|
||||
print(f"view path={path}, dataset={key.dataset}, annotation_file= {key.annotation_file}, key={key.pathpart}")
|
||||
print(
|
||||
f"view path={path}, dataset={key.dataset}, annotation_file= {key.annotation_file}, key={key.pathpart}"
|
||||
)
|
||||
with entry_lock:
|
||||
match = cache.check_entry(key)
|
||||
if match is None:
|
||||
@@ -225,16 +248,25 @@ def do_view(path):
|
||||
def do_GET_status():
|
||||
return render_template("cache_status.html", entry_list=cache.entry_list)
|
||||
|
||||
|
||||
@app.route("/cache_status.json", methods=["GET"])
|
||||
def do_GET_status_json():
|
||||
return json.dumps({'launchtime':app.launchtime,
|
||||
'entry_list':[{
|
||||
'dataset': entry.key.dataset,
|
||||
'annotation_file': entry.key.annotation_file,
|
||||
'launchtime': entry.launchtime,
|
||||
'last_access': entry.timestamp,
|
||||
'status': entry.status
|
||||
} for entry in cache.entry_list]})
|
||||
return json.dumps(
|
||||
{
|
||||
"launchtime": app.launchtime,
|
||||
"entry_list": [
|
||||
{
|
||||
"dataset": entry.key.dataset,
|
||||
"annotation_file": entry.key.annotation_file,
|
||||
"launchtime": entry.launchtime,
|
||||
"last_access": entry.timestamp,
|
||||
"status": entry.status,
|
||||
}
|
||||
for entry in cache.entry_list
|
||||
],
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@app.route("/relaunch/<path:path>", methods=["GET"])
|
||||
def do_relaunch(path):
|
||||
@@ -243,7 +275,11 @@ def do_relaunch(path):
|
||||
if not match is None:
|
||||
match.terminate()
|
||||
qs = request.query_string.decode()
|
||||
return redirect(url_for("do_view", path=path) + (f'?{qs}' if len(qs) > 0 else ''), code=302)
|
||||
return redirect(
|
||||
url_for("do_view", path=path) + (f"?{qs}" if len(qs) > 0 else ""),
|
||||
code=302,
|
||||
)
|
||||
|
||||
|
||||
@app.route("/terminate/<path:path>", methods=["GET"])
|
||||
def do_terminate(path):
|
||||
@@ -253,13 +289,18 @@ def do_terminate(path):
|
||||
match.terminate()
|
||||
return redirect(url_for("do_GET_status"), code=302)
|
||||
|
||||
|
||||
@app.route("/metadata/ip_address", methods=["GET"])
|
||||
def ip_address():
|
||||
resp = make_response(env.ip)
|
||||
return set_no_cache(resp)
|
||||
|
||||
|
||||
def main():
|
||||
logging.basicConfig(level=logging.INFO, format='%(asctime)s:%(name)s:%(levelname)s:%(message)s')
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format="%(asctime)s:%(name)s:%(levelname)s:%(message)s",
|
||||
)
|
||||
env.validate()
|
||||
pruner = PruneProcessCache(cache)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user