diff options
author | Aaron LI <aaronly.me@outlook.com> | 2016-11-23 16:53:57 +0800 |
---|---|---|
committer | Aaron LI <aaronly.me@outlook.com> | 2016-11-23 16:54:27 +0800 |
commit | a993ae58f3c848bbf46c90f217d1dbc1f44828c1 (patch) | |
tree | 9b9a7f6006c5ba1705766142abefc0454f2f1ff3 /fg21sim/webui/handlers/products.py | |
parent | 58bc8b4bca4a0272ea78294d8aa413598eaf75c6 (diff) | |
download | fg21sim-a993ae58f3c848bbf46c90f217d1dbc1f44828c1.tar.bz2 |
webui: products: Implement GET action "which"
The "which" GET action try to locate the given executable name/path, in
order to check whether the executable callable.
This function will be used to check the validity of the specified FITS
viewer, which opens the HPX FITS images.
Diffstat (limited to 'fg21sim/webui/handlers/products.py')
-rw-r--r-- | fg21sim/webui/handlers/products.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/fg21sim/webui/handlers/products.py b/fg21sim/webui/handlers/products.py index f68fa5d..ffb27bb 100644 --- a/fg21sim/webui/handlers/products.py +++ b/fg21sim/webui/handlers/products.py @@ -8,6 +8,7 @@ Handle the AJAX requests from the client to manage the simulation products. import os import logging +import shutil import tornado.ioloop from tornado.escape import json_decode, json_encode @@ -41,16 +42,32 @@ class ProductsAJAXHandler(BaseRequestHandler): Supported actions: - get: Get the current products manifest + - which: Locate the command/program (check whether the command/program + can be found in PATH and is executable) - download: TODO - open: TODO """ action = self.get_argument("action", "get") if action == "get": + # Get current products manifest response = { "manifest": self.products.manifest, "localhost": self.from_localhost, } success = True + elif action == "which": + # Locate (and check) the command/program + cmd = json_decode(self.get_argument("cmd")) + cmdpath = shutil.which(cmd) + if cmdpath: + success = True + response = { + "isExecutable": True, + "cmdPath": cmdpath, + } + else: + success = False + reason = "Cannot locate the executable for: {0}".format(cmd) else: # ERROR: bad action success = False |