from vtkmodules.vtkCommonMisc import vtkResourceFileLocator
import os.path, sys, platform
[docs]def find_webapp(appname):
"""Returns the path to the is web app with given name is found in the package."""
if platform.system() == "Darwin":
root = "Resources/"
else:
from paraview.servermanager import vtkSMProxyManager
pv_version = "%d.%d" % (vtkSMProxyManager.GetVersionMajor(), vtkSMProxyManager.GetVersionMinor())
root = "share/paraview-%s/" % pv_version
filename = root + "web/%s/server/pvw-%s.py" % (appname, appname)
locator = vtkResourceFileLocator()
result = locator.Locate(os.path.dirname(os.path.abspath(__file__)), filename)
if result:
return os.path.join(result, filename)
return None
[docs]def find_webappcontents(appname):
path = find_webapp(appname)
if not path:
return None
root = os.path.dirname(os.path.dirname(path))
return os.path.join(root, "www")
[docs]def load_webapp(appname):
path = find_webapp(appname)
if not path:
return None
# the web-apps are not proper packages right now, which makes it a little
# ugly to import them.
sys.path.insert(0, os.path.dirname(path))
packagename = os.path.splitext(os.path.basename(path))[0]
return __import__(packagename)
[docs]def get_commandline_args(appname):
clargs = sys.argv[1:]
if not "-c" in clargs and not "--content" in clargs:
clargs.append("-c")
clargs.append(find_webappcontents(appname))
return clargs
[docs]def start_server(appname, description, module, protocol):
import argparse
# Create argument parser
parser = argparse.ArgumentParser(description=description)
# Add arguments
module.server.add_arguments(parser)
protocol.add_arguments(parser)
args = parser.parse_args(get_commandline_args(appname))
protocol.configure(args)
# Start server
module.server.start_webserver(options=args, protocol=protocol)