pyramid_cubicweb/__init__.py
author Christophe de Vienne <christophe@unlish.com>
Wed, 29 Apr 2015 13:09:06 +0200
changeset 11567 4f8aa5fcd5da
parent 11564 a6547ff97ce0
child 11586 c7a25122af4d
permissions -rw-r--r--
[debug] The debug mode now set pyramid.reload_templates
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11503
ddf61aa73384 Add a wsgi application factory suitable for wsgi servers.
Christophe de Vienne <christophe@unlish.com>
parents: 11501
diff changeset
     1
import os
11563
f9473eb6a8a9 Make debug mode usable without pyramid_debugtoolbar
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11550
diff changeset
     2
from warnings import warn
11511
13e0f569684c Use 'wsgicors' for CORS handling.
Christophe de Vienne <christophe@unlish.com>
parents: 11503
diff changeset
     3
import wsgicors
11503
ddf61aa73384 Add a wsgi application factory suitable for wsgi servers.
Christophe de Vienne <christophe@unlish.com>
parents: 11501
diff changeset
     4
ddf61aa73384 Add a wsgi application factory suitable for wsgi servers.
Christophe de Vienne <christophe@unlish.com>
parents: 11501
diff changeset
     5
from cubicweb.cwconfig import CubicWebConfiguration as cwcfg
11501
fcf7f99fad4a Add a make_cubicweb_application function
Christophe de Vienne <christophe@unlish.com>
parents: 11492
diff changeset
     6
from pyramid.config import Configurator
11534
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
     7
from pyramid.settings import asbool, aslist
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
     8
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
     9
try:
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
    10
    from configparser import SafeConfigParser
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
    11
except ImportError:
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
    12
    from ConfigParser import SafeConfigParser
11501
fcf7f99fad4a Add a make_cubicweb_application function
Christophe de Vienne <christophe@unlish.com>
parents: 11492
diff changeset
    13
fcf7f99fad4a Add a make_cubicweb_application function
Christophe de Vienne <christophe@unlish.com>
parents: 11492
diff changeset
    14
11564
a6547ff97ce0 Allow tests to override pyramid_settings
Christophe de Vienne <christophe@unlish.com>
parents: 11563
diff changeset
    15
def make_cubicweb_application(cwconfig, settings=None):
11501
fcf7f99fad4a Add a make_cubicweb_application function
Christophe de Vienne <christophe@unlish.com>
parents: 11492
diff changeset
    16
    """
fcf7f99fad4a Add a make_cubicweb_application function
Christophe de Vienne <christophe@unlish.com>
parents: 11492
diff changeset
    17
    Create a pyramid-based CubicWeb instance from a cubicweb configuration.
fcf7f99fad4a Add a make_cubicweb_application function
Christophe de Vienne <christophe@unlish.com>
parents: 11492
diff changeset
    18
fcf7f99fad4a Add a make_cubicweb_application function
Christophe de Vienne <christophe@unlish.com>
parents: 11492
diff changeset
    19
    It is initialy meant to be used by the 'pyramid' command of cubicweb-ctl.
11537
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
    20
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
    21
    :param cwconfig: A CubicWeb configuration
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
    22
    :returns: A Pyramid config object
11501
fcf7f99fad4a Add a make_cubicweb_application function
Christophe de Vienne <christophe@unlish.com>
parents: 11492
diff changeset
    23
    """
11534
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
    24
    settings_filenames = [os.path.join(cwconfig.apphome, 'pyramid.ini')]
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
    25
11564
a6547ff97ce0 Allow tests to override pyramid_settings
Christophe de Vienne <christophe@unlish.com>
parents: 11563
diff changeset
    26
    settings = dict(settings) if settings else {}
11534
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
    27
11501
fcf7f99fad4a Add a make_cubicweb_application function
Christophe de Vienne <christophe@unlish.com>
parents: 11492
diff changeset
    28
    if cwconfig.debugmode:
11534
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
    29
        settings_filenames.insert(
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
    30
            0, os.path.join(cwconfig.apphome, 'pyramid-debug.ini'))
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
    31
11501
fcf7f99fad4a Add a make_cubicweb_application function
Christophe de Vienne <christophe@unlish.com>
parents: 11492
diff changeset
    32
        settings.update({
fcf7f99fad4a Add a make_cubicweb_application function
Christophe de Vienne <christophe@unlish.com>
parents: 11492
diff changeset
    33
            'pyramid.debug_authorization': True,
fcf7f99fad4a Add a make_cubicweb_application function
Christophe de Vienne <christophe@unlish.com>
parents: 11492
diff changeset
    34
            'pyramid.debug_notfound': True,
fcf7f99fad4a Add a make_cubicweb_application function
Christophe de Vienne <christophe@unlish.com>
parents: 11492
diff changeset
    35
            'pyramid.debug_routematch': True,
11567
4f8aa5fcd5da [debug] The debug mode now set pyramid.reload_templates
Christophe de Vienne <christophe@unlish.com>
parents: 11564
diff changeset
    36
            'pyramid.reload_templates': True,
11501
fcf7f99fad4a Add a make_cubicweb_application function
Christophe de Vienne <christophe@unlish.com>
parents: 11492
diff changeset
    37
        })
11534
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
    38
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
    39
    for fname in settings_filenames:
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
    40
        if os.path.exists(fname):
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
    41
            cp = SafeConfigParser()
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
    42
            cp.read(fname)
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
    43
            settings.update(cp.items('main'))
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
    44
            break
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
    45
11501
fcf7f99fad4a Add a make_cubicweb_application function
Christophe de Vienne <christophe@unlish.com>
parents: 11492
diff changeset
    46
    config = Configurator(settings=settings)
fcf7f99fad4a Add a make_cubicweb_application function
Christophe de Vienne <christophe@unlish.com>
parents: 11492
diff changeset
    47
    if cwconfig.debugmode:
11563
f9473eb6a8a9 Make debug mode usable without pyramid_debugtoolbar
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11550
diff changeset
    48
        try:
f9473eb6a8a9 Make debug mode usable without pyramid_debugtoolbar
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11550
diff changeset
    49
            config.include('pyramid_debugtoolbar')
f9473eb6a8a9 Make debug mode usable without pyramid_debugtoolbar
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11550
diff changeset
    50
        except ImportError:
f9473eb6a8a9 Make debug mode usable without pyramid_debugtoolbar
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11550
diff changeset
    51
            warn('pyramid_debugtoolbar package not available, install it to '
f9473eb6a8a9 Make debug mode usable without pyramid_debugtoolbar
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11550
diff changeset
    52
                 'get UI debug features', RuntimeWarning)
11501
fcf7f99fad4a Add a make_cubicweb_application function
Christophe de Vienne <christophe@unlish.com>
parents: 11492
diff changeset
    53
    config.registry['cubicweb.config'] = cwconfig
fcf7f99fad4a Add a make_cubicweb_application function
Christophe de Vienne <christophe@unlish.com>
parents: 11492
diff changeset
    54
    config.registry['cubicweb.repository'] = repo = cwconfig.repository()
fcf7f99fad4a Add a make_cubicweb_application function
Christophe de Vienne <christophe@unlish.com>
parents: 11492
diff changeset
    55
    config.registry['cubicweb.registry'] = repo.vreg
11534
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
    56
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
    57
    if asbool(config.registry.settings.get('cubicweb.defaults', True)):
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
    58
        config.include('pyramid_cubicweb.defaults')
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
    59
11540
10a1ee7836ed Fix configuration loading when 'cubicweb.includes' is not set
Christophe de Vienne <christophe@unlish.com>
parents: 11537
diff changeset
    60
    for name in aslist(config.registry.settings.get('cubicweb.includes', [])):
11534
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
    61
        config.include(name)
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
    62
11550
38ed4c3ac3de [tools] Provide a faster build_user
Christophe de Vienne <christophe@unlish.com>
parents: 11547
diff changeset
    63
    config.include('pyramid_cubicweb.tools')
11501
fcf7f99fad4a Add a make_cubicweb_application function
Christophe de Vienne <christophe@unlish.com>
parents: 11492
diff changeset
    64
    config.include('pyramid_cubicweb.core')
11534
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
    65
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
    66
    if asbool(config.registry.settings.get('cubicweb.bwcompat', True)):
ceb1a5baca4f [config] Read pyramid settings in a 'pyramid.ini' file
Christophe de Vienne <christophe@unlish.com>
parents: 11532
diff changeset
    67
        config.include('pyramid_cubicweb.bwcompat')
11501
fcf7f99fad4a Add a make_cubicweb_application function
Christophe de Vienne <christophe@unlish.com>
parents: 11492
diff changeset
    68
    return config
11503
ddf61aa73384 Add a wsgi application factory suitable for wsgi servers.
Christophe de Vienne <christophe@unlish.com>
parents: 11501
diff changeset
    69
ddf61aa73384 Add a wsgi application factory suitable for wsgi servers.
Christophe de Vienne <christophe@unlish.com>
parents: 11501
diff changeset
    70
11535
dd875009cc47 [profile] Add a profiling tool
Christophe de Vienne <christophe@unlish.com>
parents: 11534
diff changeset
    71
def wsgi_application_from_cwconfig(
dd875009cc47 [profile] Add a profiling tool
Christophe de Vienne <christophe@unlish.com>
parents: 11534
diff changeset
    72
        cwconfig,
dd875009cc47 [profile] Add a profiling tool
Christophe de Vienne <christophe@unlish.com>
parents: 11534
diff changeset
    73
        profile=False, profile_output=None, profile_dump_every=None):
11537
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
    74
    """ Build a WSGI application from a cubicweb configuration
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
    75
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
    76
    :param cwconfig: A CubicWeb configuration
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
    77
    :param profile: Enable profiling. See :ref:`profiling`.
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
    78
    :param profile_output: Profiling output filename. See :ref:`profiling`.
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
    79
    :param profile_dump_every: Profiling number of requests before dumping the
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
    80
                               stats. See :ref:`profiling`.
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
    81
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
    82
    :returns: A fully operationnal WSGI application
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
    83
    """
11503
ddf61aa73384 Add a wsgi application factory suitable for wsgi servers.
Christophe de Vienne <christophe@unlish.com>
parents: 11501
diff changeset
    84
    config = make_cubicweb_application(cwconfig)
11535
dd875009cc47 [profile] Add a profiling tool
Christophe de Vienne <christophe@unlish.com>
parents: 11534
diff changeset
    85
    profile = profile or asbool(config.registry.settings.get(
dd875009cc47 [profile] Add a profiling tool
Christophe de Vienne <christophe@unlish.com>
parents: 11534
diff changeset
    86
        'cubicweb.profile.enable', False))
dd875009cc47 [profile] Add a profiling tool
Christophe de Vienne <christophe@unlish.com>
parents: 11534
diff changeset
    87
    if profile:
dd875009cc47 [profile] Add a profiling tool
Christophe de Vienne <christophe@unlish.com>
parents: 11534
diff changeset
    88
        config.add_route('profile_ping', '_profile/ping')
dd875009cc47 [profile] Add a profiling tool
Christophe de Vienne <christophe@unlish.com>
parents: 11534
diff changeset
    89
        config.add_route('profile_cnx', '_profile/cnx')
dd875009cc47 [profile] Add a profiling tool
Christophe de Vienne <christophe@unlish.com>
parents: 11534
diff changeset
    90
        config.scan('pyramid_cubicweb.profile')
11511
13e0f569684c Use 'wsgicors' for CORS handling.
Christophe de Vienne <christophe@unlish.com>
parents: 11503
diff changeset
    91
    app = config.make_wsgi_app()
13e0f569684c Use 'wsgicors' for CORS handling.
Christophe de Vienne <christophe@unlish.com>
parents: 11503
diff changeset
    92
    # This replaces completely web/cors.py, which is not used by
13e0f569684c Use 'wsgicors' for CORS handling.
Christophe de Vienne <christophe@unlish.com>
parents: 11503
diff changeset
    93
    # pyramid_cubicweb anymore
13e0f569684c Use 'wsgicors' for CORS handling.
Christophe de Vienne <christophe@unlish.com>
parents: 11503
diff changeset
    94
    app = wsgicors.CORS(
13e0f569684c Use 'wsgicors' for CORS handling.
Christophe de Vienne <christophe@unlish.com>
parents: 11503
diff changeset
    95
        app,
11532
6a1d0aa3ac85 Fix cors 'origin' parameter passing
Christophe de Vienne <christophe@unlish.com>
parents: 11522
diff changeset
    96
        origin=' '.join(cwconfig['access-control-allow-origin']),
11547
fd7d2033cd80 [cors] Fix 'headers' and 'methods' parameters
Christophe de Vienne <christophe@unlish.com>
parents: 11540
diff changeset
    97
        headers=', '.join(cwconfig['access-control-allow-headers']),
fd7d2033cd80 [cors] Fix 'headers' and 'methods' parameters
Christophe de Vienne <christophe@unlish.com>
parents: 11540
diff changeset
    98
        methods=', '.join(cwconfig['access-control-allow-methods']),
11511
13e0f569684c Use 'wsgicors' for CORS handling.
Christophe de Vienne <christophe@unlish.com>
parents: 11503
diff changeset
    99
        credentials='true')
11535
dd875009cc47 [profile] Add a profiling tool
Christophe de Vienne <christophe@unlish.com>
parents: 11534
diff changeset
   100
dd875009cc47 [profile] Add a profiling tool
Christophe de Vienne <christophe@unlish.com>
parents: 11534
diff changeset
   101
    if profile:
dd875009cc47 [profile] Add a profiling tool
Christophe de Vienne <christophe@unlish.com>
parents: 11534
diff changeset
   102
        from pyramid_cubicweb.profile import wsgi_profile
dd875009cc47 [profile] Add a profiling tool
Christophe de Vienne <christophe@unlish.com>
parents: 11534
diff changeset
   103
        filename = profile_output or config.registry.settings.get(
dd875009cc47 [profile] Add a profiling tool
Christophe de Vienne <christophe@unlish.com>
parents: 11534
diff changeset
   104
            'cubicweb.profile.output', 'program.prof')
dd875009cc47 [profile] Add a profiling tool
Christophe de Vienne <christophe@unlish.com>
parents: 11534
diff changeset
   105
        dump_every = profile_dump_every or config.registry.settings.get(
dd875009cc47 [profile] Add a profiling tool
Christophe de Vienne <christophe@unlish.com>
parents: 11534
diff changeset
   106
            'cubicweb.profile.dump_every', 100)
dd875009cc47 [profile] Add a profiling tool
Christophe de Vienne <christophe@unlish.com>
parents: 11534
diff changeset
   107
        app = wsgi_profile(app, filename=filename, dump_every=dump_every)
11511
13e0f569684c Use 'wsgicors' for CORS handling.
Christophe de Vienne <christophe@unlish.com>
parents: 11503
diff changeset
   108
    return app
11522
568204930c85 Provides a full wsgi cubicweb application builder
Christophe de Vienne <christophe@unlish.com>
parents: 11511
diff changeset
   109
568204930c85 Provides a full wsgi cubicweb application builder
Christophe de Vienne <christophe@unlish.com>
parents: 11511
diff changeset
   110
568204930c85 Provides a full wsgi cubicweb application builder
Christophe de Vienne <christophe@unlish.com>
parents: 11511
diff changeset
   111
def wsgi_application(instance_name=None, debug=None):
11537
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   112
    """ Build a WSGI application from a cubicweb instance name
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   113
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   114
    :param instance_name: Name of the cubicweb instance (optional). If not
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   115
                          provided, :envvar:`CW_INSTANCE` must exists.
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   116
    :param debug: Enable/disable the debug mode. If defined to True or False,
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   117
                  overrides :envvar:`CW_DEBUG`.
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   118
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   119
    The following environment variables are used if they exist:
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   120
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   121
    .. envvar:: CW_INSTANCE
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   122
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   123
        A CubicWeb instance name.
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   124
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   125
    .. envvar:: CW_DEBUG
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   126
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   127
        If defined, the debugmode is enabled.
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   128
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   129
    The function can be used as an entry-point for third-party wsgi containers.
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   130
    Below is a sample uswgi configuration file:
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   131
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   132
    .. code-block:: ini
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   133
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   134
        [uwsgi]
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   135
        http = 127.0.1.1:8080
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   136
        env = CW_INSTANCE=myinstance
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   137
        env = CW_DEBUG=1
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   138
        module = pyramid_cubicweb:wsgi_application()
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   139
        virtualenv = /home/user/.virtualenvs/myvirtualenv
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   140
        processes = 1
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   141
        threads = 8
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   142
        stats = 127.0.0.1:9191
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   143
        plugins = http,python
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   144
caf268942436 Initial documentation.
Christophe de Vienne <christophe@unlish.com>
parents: 11535
diff changeset
   145
    """
11522
568204930c85 Provides a full wsgi cubicweb application builder
Christophe de Vienne <christophe@unlish.com>
parents: 11511
diff changeset
   146
    if instance_name is None:
568204930c85 Provides a full wsgi cubicweb application builder
Christophe de Vienne <christophe@unlish.com>
parents: 11511
diff changeset
   147
        instance_name = os.environ.get('CW_INSTANCE')
568204930c85 Provides a full wsgi cubicweb application builder
Christophe de Vienne <christophe@unlish.com>
parents: 11511
diff changeset
   148
    if debug is None:
568204930c85 Provides a full wsgi cubicweb application builder
Christophe de Vienne <christophe@unlish.com>
parents: 11511
diff changeset
   149
        debug = 'CW_DEBUG' in os.environ
568204930c85 Provides a full wsgi cubicweb application builder
Christophe de Vienne <christophe@unlish.com>
parents: 11511
diff changeset
   150
568204930c85 Provides a full wsgi cubicweb application builder
Christophe de Vienne <christophe@unlish.com>
parents: 11511
diff changeset
   151
    cwconfig = cwcfg.config_for(instance_name, debugmode=debug)
568204930c85 Provides a full wsgi cubicweb application builder
Christophe de Vienne <christophe@unlish.com>
parents: 11511
diff changeset
   152
568204930c85 Provides a full wsgi cubicweb application builder
Christophe de Vienne <christophe@unlish.com>
parents: 11511
diff changeset
   153
    return wsgi_application_from_cwconfig(cwconfig)