diff options
Diffstat (limited to 'fg21sim/webui/handlers')
| -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  | 
