Source code for ginsfsm.examples.sockjs.test_sockjs_apps
# -*- encoding: utf-8 -*-
"""
Pyramid root entry point
.. autoclass:: PyramidRoot
:members:
:func:`pyramid_application`.
"""
from pyramid.config import Configurator
from pyramid.security import (
Allow,
Everyone,
ALL_PERMISSIONS,
)
from ginsfsm.globals import get_global_app
from ginsfsm.gobj import GObj
from .pyramid_main import TestSocksjsApps
#----------------------------------------------------------------------#
# Pyramid root
#----------------------------------------------------------------------#
PYRAMIDROOT_GCONFIG = {
}
[docs]class PyramidRoot(GObj):
""" Pyramid root.
Must be a gobj with an empty name.
"""
__acl__ = [
(Allow, Everyone, ALL_PERMISSIONS)
]
def __init__(self):
GObj.__init__(self, {}, PYRAMIDROOT_GCONFIG)
[docs] def start_up(self):
""" Initialization zone.
"""
self.pyramid_app = self.create_gobj(
'__test_sockjs__',
TestSocksjsApps,
self,
)
pyramid_root = None
def make_root(gaplic):
global pyramid_root
if pyramid_root is None:
pyramid_root = gaplic.create_gobj(
None, # pyramid resources tree root MUST be unnamed.
PyramidRoot,
None,
)
return pyramid_root
def get_root(request):
return pyramid_root
#-------------------------------------------------#
# Paste entry point
# Pyramid wsgi-app configuration
#-------------------------------------------------#
def pyramid_application(global_config, **local_conf):
""" Paste entry point.
Returns a WSGI application.
"""
if 'gaplic' in local_conf:
gaplic_name = local_conf.pop('gaplic')
else:
raise Exception('You must supply a gaplic name in ini file.')
gaplic = get_global_app(gaplic_name)
if not gaplic:
raise Exception("gaplic '%s' supplied for wsgi is invalid" %
gaplic_name)
config = Configurator(
root_factory=get_root,
settings=local_conf,
)
# Set up views
config.include("ginsfsm.protocols.sockjs.server")
make_root(gaplic)
return config.make_wsgi_app()