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    # session middleware:
0015    cookie_name='_SID_',
0016    session_file_path='/tmp',
0017    # error middleware:
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    # enabling:
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