123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- from vtkmodules.vtkCommonMisc import vtkResourceFileLocator
- import os.path, sys, platform
- 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
- 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")
- 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)
- 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
- 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)
|