0001import sys
0002import os
0003from paste.util import import_string, findpackage
0004from paste import urlparser
0005from paste.deploy.converters import asbool
0006from paste.deploy.config import ConfigMiddleware
0007
0008def sys_path_install():
0009 webware_dir = os.path.join(os.path.dirname(__file__),
0010 'FakeWebware')
0011 if webware_dir not in sys.path:
0012 sys.path.append(webware_dir)
0013
0014def make_webkit_app(
0015 global_conf,
0016 servlet_directory=None,
0017 package_name=None,
0018 complete_stack=True,
0019 debug=None,
0020
0021 cookie_name='_SID_',
0022 session_file_path='/tmp',
0023 session_chmod=None,
0024
0025 error_email=None,
0026 error_log=None,
0027 show_exceptions_in_wsgi_errors=False,
0028 from_address=None,
0029 smtp_server=None,
0030 error_subject_prefix=None,
0031 error_message=None,
0032
0033 profile=False,
0034 profile_limit=40,
0035 **app_conf):
0036 sys_path_install()
0037 if package_name:
0038 package = package_name
0039 if isinstance(package, (str, unicode)):
0040 package = import_string.simple_import(package)
0041 package_dir = os.path.dirname(package.__file__)
0042 else:
0043 package = None
0044 package_dir = ''
0045 sys.stderr.write(
0046 'You did not give a package or package name argument '
0047 'to paste.webkit.wsgiapp:make_webkit_app\n')
0048 if servlet_directory:
0049 if package_dir:
0050 servlet_directory = os.path.join(package_dir, servlet_directory)
0051 else:
0052 servlet_directory = os.path.join(package_dir, 'web')
0053
0054 url_package_name = findpackage.find_package(servlet_directory)
0055 app = urlparser.URLParser(
0056 global_conf, servlet_directory, url_package_name)
0057
0058 combined_conf = global_conf.copy()
0059 combined_conf.update(app_conf)
0060 app = ConfigMiddleware(app, combined_conf)
0061
0062 if debug is None:
0063 debug = global_conf.get('debug')
0064 debug = asbool(debug)
0065
0066 if show_exceptions_in_wsgi_errors is None:
0067 show_exceptions_in_wsgi_errors = not debug
0068
0069 if error_subject_prefix is None:
0070 app_name = combined_conf.get('app_name')
0071 if app_name:
0072 error_subject_prefix = '[%s] ' % app_name
0073
0074 if error_email is None:
0075 error_email = (global_conf.get('error_email')
0076 or global_conf.get('sysadmin_email'))
0077
0078 if session_chmod is None:
0079 session_chmod = global_conf.get('session_chmod')
0080
0081 if asbool(complete_stack):
0082 from paste import session, recursive, httpexceptions
0083 from paste.exceptions import errormiddleware
0084 app = httpexceptions.make_middleware(
0085 app, global_conf)
0086 app = recursive.RecursiveMiddleware(
0087 app, global_conf)
0088 app = session.SessionMiddleware(
0089 app, global_conf, cookie_name=cookie_name,
0090 session_file_path=session_file_path,
0091 chmod=session_chmod)
0092 app = errormiddleware.ErrorMiddleware(
0093 app, global_conf,
0094 debug=debug,
0095 error_email=error_email,
0096 show_exceptions_in_wsgi_errors=show_exceptions_in_wsgi_errors,
0097 from_address=from_address,
0098 smtp_server=smtp_server,
0099 error_subject_prefix=error_subject_prefix,
0100 error_message=error_message,
0101 )
0102
0103 if debug:
0104 from paste.debug import prints
0105 app = prints.PrintDebugMiddleware(
0106 app, global_conf)
0107
0108 if asbool(profile):
0109 from paste import profilemiddleware
0110 app = profilemiddleware.ProfileMiddleware(
0111 app, global_conf, limit=int(profile_limit))
0112
0113 return app