0001import os
0002from paste.util import import_string, findpackage
0003from paste import urlparser
0004from paste.deploy.converters import asbool
0005from paste.deploy.config import ConfigMiddleware
0006
0007def make_wareweb_app(
0008 global_conf,
0009 servlet_directory=None,
0010 package_name=None,
0011 template_directory=None,
0012 complete_stack=True,
0013 debug=False,
0014
0015 cookie_name='_SID_',
0016 session_file_path='/tmp',
0017
0018 error_email=None,
0019 error_log=None,
0020 show_exceptions_in_wsgi_errors=False,
0021 from_address=None,
0022 smtp_server=None,
0023 error_subject_prefix=None,
0024 error_message=None,
0025
0026 profile=False,
0027 profile_limit=40,
0028 **app_conf):
0029 if package_name:
0030 package = package_name
0031 if isinstance(package, (str, unicode)):
0032 package = import_string.simple_import(package)
0033 package_dir = os.path.dirname(package.__file__)
0034 else:
0035 package = None
0036 package_dir = ''
0037 if servlet_directory:
0038 if package_dir:
0039 servlet_directory = os.path.join(package_dir, servlet_directory)
0040 else:
0041 servlet_directory = os.path.join(package_dir, 'web')
0042 if template_directory:
0043 if package_dir:
0044 template_directory = os.path.join(package_dir, template_directory)
0045 else:
0046 template_directory = os.path.join(package_dir, 'templates')
0047
0048 url_package_name = findpackage.find_package(servlet_directory)
0049 app = urlparser.URLParser(
0050 global_conf, servlet_directory, url_package_name)
0051
0052 app_conf['servlet_directory'] = servlet_directory
0053 app_conf['template_directory'] = template_directory
0054
0055 combined_conf = global_conf.copy()
0056 combined_conf.update(app_conf)
0057 app = ConfigMiddleware(app, combined_conf)
0058
0059 if asbool(complete_stack):
0060 from paste import session, recursive, httpexceptions
0061 from paste.exceptions import errormiddleware
0062 app = recursive.RecursiveMiddleware(
0063 app, global_conf)
0064 app = session.SessionMiddleware(
0065 app, global_conf, cookie_name=cookie_name,
0066 session_file_path=session_file_path)
0067 app = httpexceptions.make_middleware(
0068 app, global_conf)
0069 app = errormiddleware.ErrorMiddleware(
0070 app, global_conf,
0071 debug=debug,
0072 error_email=error_email,
0073 show_exceptions_in_wsgi_errors=show_exceptions_in_wsgi_errors,
0074 from_address=from_address,
0075 smtp_server=smtp_server,
0076 error_subject_prefix=error_subject_prefix,
0077 error_message=error_message,
0078 )
0079
0080 if asbool(debug):
0081 from paste import printdebug
0082 app = printdebug.PrintDebugMiddleware(
0083 app, global_conf)
0084
0085 if asbool(profile):
0086 from paste import profilemiddleware
0087 app = profilemiddleware.ProfileMiddleware(
0088 app, global_conf, limit=int(profile_limit))
0089
0090 return app