Ejemplo n.º 1
0
def app(global_config, **settings):
    """ This function returns a WSGI application.
    
    It is usually called by the PasteDeploy framework during 
    ``paster serve``.
    """
    db_string = settings.get("db_string")
    if db_string is None:
        raise ValueError("No 'db_string' value in application configuration.")
    db_echo = settings.get("db_echo", "false")
    initialize_sql(db_string, asbool(db_echo))
    config = Configurator(settings=settings)
    config.begin()
    config.add_static_view("static", "tutorial:static")
    config.add_route("home", "/", view="tutorial.views.view_wiki")
    config.add_route(
        "view_page", "/:pagename", view="tutorial.views.view_page", view_renderer="tutorial:templates/view.pt"
    )
    config.add_route(
        "add_page", "/add_page/:pagename", view="tutorial.views.add_page", view_renderer="tutorial:templates/view.pt"
    )
    config.add_route(
        "edit_page", "/:pagename/edit_page", view="tutorial.views.edit_page", view_renderer="tutorial:templates/edit.pt"
    )
    config.end()
    return config.make_wsgi_app()
Ejemplo n.º 2
0
class TestIntegration(unittest.TestCase):
    def setUp(self):
        import pyramid.mako_templating
        from pyramid.configuration import Configurator
        self.config = Configurator()
        self.config.begin()
        self.config.add_settings({'mako.directories':
                                  'pyramid.tests:fixtures'})
        self.config.add_renderer('.mak',
                                 pyramid.mako_templating.renderer_factory)

    def tearDown(self):
        self.config.end()

    def test_render(self):
        from pyramid.renderers import render
        result = render('helloworld.mak', {'a':1})
        self.assertEqual(result, u'\nHello föö\n')

    def test_render_to_response(self):
        from pyramid.renderers import render_to_response
        result = render_to_response('helloworld.mak', {'a':1})
        self.assertEqual(result.ubody, u'\nHello föö\n')

    def test_get_renderer(self):
        from pyramid.renderers import get_renderer
        result = get_renderer('helloworld.mak')
        self.assertEqual(result.implementation().render_unicode(),
                         u'\nHello föö\n')
Ejemplo n.º 3
0
def app(global_config, **settings):
    """ This function returns a WSGI application.
    
    It is usually called by the PasteDeploy framework during 
    ``paster serve``.
    """
    config = Configurator(root_factory=get_root, settings=settings)
    config.begin()
    session_factory = session_factory_from_settings(settings)
    config.set_session_factory(session_factory)

    tictactroll.gamestate.set_db_path(settings.get('db_path'))

    config.add_view("tictactroll.views.game", name="game",
                    renderer="tictactroll:templates/game.mako")
    config.add_view("tictactroll.views.about", name="about",
                    renderer="tictactroll:templates/about.mako")
    config.add_view("tictactroll.views.welcome",
                    renderer="tictactroll:templates/welcome.mako")
    config.add_view("tictactroll.views.enter_game", name="enter_game")
    config.add_view("tictactroll.views.new_game", name="new_game")

    config.add_view("tictactroll.views.add_grid", name="add_grid",
                    renderer="json")

    config.add_view("tictactroll.views.next_troll_grid",
                    name="next_troll_grid", renderer="json")

    config.add_view("tictactroll.views.gameover_html", name="gameover",
                    renderer="tictactroll:templates/gameover.mako")

    config.add_static_view("static", "tictactroll:static")
    config.end()
    return config.make_wsgi_app()
Ejemplo n.º 4
0
class TestGetSettings(unittest.TestCase):
    def setUp(self):
        from pyramid.configuration import Configurator
        from pyramid.registry import Registry
        registry = Registry('testing')
        self.config = Configurator(registry=registry)
        self.config.begin()
        from zope.deprecation import __show__
        __show__.off()

    def tearDown(self):
        self.config.end()
        from zope.deprecation import __show__
        __show__.on()
        
    def _callFUT(self):
        from pyramid.settings import get_settings
        return get_settings()

    def test_it_nosettings(self):
        self.assertEqual(self._callFUT(), None)

    def test_it_withsettings(self):
        settings = {'a':1}
        self.config.registry.settings = settings
        self.assertEqual(self._callFUT(), settings)
Ejemplo n.º 5
0
class ViewPageTests(unittest.TestCase):
    def setUp(self):
        self.session = _initTestingDB()
        self.config = Configurator()
        self.config.begin()

    def tearDown(self):
        self.session.remove()
        self.config.end()
        
    def _callFUT(self, request):
        from tutorial.views import view_page
        return view_page(request)

    def test_it(self):
        from tutorial.models import Page
        request = testing.DummyRequest()
        request.matchdict['pagename'] = 'IDoExist'
        page = Page('IDoExist', 'Hello CruelWorld IDoExist')
        self.session.add(page)
        _registerRoutes(self.config)
        info = self._callFUT(request)
        self.assertEqual(info['page'], page)
        self.assertEqual(
            info['content'], 
            '<div class="document">\n'
            '<p>Hello <a href="http://example.com/add_page/CruelWorld">'
            'CruelWorld</a> '
            '<a href="http://example.com/IDoExist">'
            'IDoExist</a>'
            '</p>\n</div>\n')
        self.assertEqual(info['edit_url'],
                         'http://example.com/IDoExist/edit_page')
Ejemplo n.º 6
0
def app(global_config, **settings):
    """ This function returns a WSGI application.
    
    It is usually called by the PasteDeploy framework during 
    ``paster serve``.
    """
    db_string = settings.get('db_string')
    if db_string is None:
        raise ValueError("No 'db_string' value in application configuration.")
    db_echo = settings.get('db_echo', 'false')
    initialize_sql(db_string, asbool(db_echo))
    config = Configurator(settings=settings)
    config.begin()
    config.add_static_view('static', 'tutorial:static')
    config.add_route('home', '/', view='tutorial.views.view_wiki')
    config.add_route('view_page', '/:pagename',
                     view='tutorial.views.view_page',
                     view_renderer='tutorial:templates/view.pt')
    config.add_route('add_page', '/add_page/:pagename',
                     view='tutorial.views.add_page',
                     view_renderer='tutorial:templates/edit.pt')
    config.add_route('edit_page', '/:pagename/edit_page',
                     view='tutorial.views.edit_page',
                     view_renderer='tutorial:templates/edit.pt')
    config.end()
    return config.make_wsgi_app()
Ejemplo n.º 7
0
class AddPageTests(unittest.TestCase):
    def setUp(self):
        self.session = _initTestingDB()
        self.config = Configurator()
        self.config.begin()

    def tearDown(self):
        self.session.remove()
        self.config.end()

    def _callFUT(self, request):
        from tutorial.views import add_page
        return add_page(request)

    def test_it_notsubmitted(self):
        _registerRoutes(self.config)
        request = testing.DummyRequest()
        request.matchdict = {'pagename':'AnotherPage'}
        info = self._callFUT(request)
        self.assertEqual(info['page'].data,'')
        self.assertEqual(info['save_url'],
                         'http://example.com/add_page/AnotherPage')
        
    def test_it_submitted(self):
        from tutorial.models import Page
        _registerRoutes(self.config)
        request = testing.DummyRequest({'form.submitted':True,
                                        'body':'Hello yo!'})
        request.matchdict = {'pagename':'AnotherPage'}
        self._callFUT(request)
        page = self.session.query(Page).filter_by(name='AnotherPage').one()
        self.assertEqual(page.data, 'Hello yo!')
Ejemplo n.º 8
0
def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """

    import logging
    logging.basicConfig(level=logging.DEBUG)

    config = Configurator(root_factory=get_root, settings=settings)
    config.begin()

    from pyramid_jinja2 import renderer_factory
    config.add_renderer('.jinja2', renderer_factory)

    # configure views, templates
    configure(config) 

    # configure session
    import pyramid_beaker
    session_factory = pyramid_beaker.session_factory_from_settings(settings)
    config.set_session_factory(session_factory)

    # configure OpenID-specific storage
    import stucco_openid.models
    from openid.store import filestore
    stucco_openid.models.root.store = \
        filestore.FileOpenIDStore(settings['openid.store_file_path'])

    config.end()
    return config.make_wsgi_app()
Ejemplo n.º 9
0
class TestSubscriber(unittest.TestCase):
    def setUp(self):
        registry = DummyRegistry()
        from pyramid.configuration import Configurator
        self.config = Configurator(registry)
        self.config.begin()

    def tearDown(self):
        self.config.end()

    def _makeOne(self, *ifaces):
        from pyramid.events import subscriber
        return subscriber(*ifaces)

    def test_register(self):
        from zope.interface import Interface
        class IFoo(Interface): pass
        class IBar(Interface): pass
        dec = self._makeOne(IFoo, IBar)
        def foo(): pass
        config = DummyConfigurator()
        scanner = Dummy()
        scanner.config = config
        dec.register(scanner, None, foo)
        self.assertEqual(config.subscribed, [(foo, (IFoo, IBar))])

    def test___call__(self):
        dec = self._makeOne()
        dummy_venusian = DummyVenusian()
        dec.venusian = dummy_venusian
        def foo(): pass
        dec(foo)
        self.assertEqual(dummy_venusian.attached, [(foo, dec.register, 'bfg')])
Ejemplo n.º 10
0
class Base(object):
    def setUp(self):
        from pyramid.configuration import Configurator
        self.config = Configurator()
        self.config.begin()
        import os
        here = os.path.abspath(os.path.dirname(__file__))
        self.templates_dir = os.path.join(here, 'fixtures')

    def tearDown(self):
        self.config.end()
Ejemplo n.º 11
0
class BaseViewTests(unittest.TestCase):
    
    def setUp(self):
        config['io_device'] = {'class': MockDriver, 'kw':{}}
        self.config = Configurator()
        self.config.begin()
        registerSettings(io_dev='')
        self.front_page = get_root(None)
        
    def tearDown(self):
        self.config.end()
Ejemplo n.º 12
0
def app(global_config, **settings):
    """ This function returns a WSGI application.
    
    It is usually called by the PasteDeploy framework during 
    ``paster serve``.
    """
    config = Configurator(root_factory=get_root, settings=settings)
    config.begin()
    config.load_zcml('configure.zcml')
    config.end()
    return config.make_wsgi_app()
Ejemplo n.º 13
0
def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """
    config = Configurator(root_factory=get_root, settings=settings)
    config.begin()
    config.add_view('som.views.my_view',
                    context='som.models.MyModel',
                    renderer='som:templates/mytemplate.pt')
    config.add_static_view('static', 'som:static')
    config.end()
    return config.make_wsgi_app()
Ejemplo n.º 14
0
def app(global_config, **settings):
    db_uri = settings.get('db_uri')
    db_name = settings.get('db_name')
    if db_uri is None or db_name is None:
        raise ValueError("db_uri AND db_name must be defined"
                         " in application initilization configuration file")
    zcml_file = settings.get('configure_zcml', 'configure.zcml')
    config = Configurator(root_factory=RootFactory, settings=settings)
    config.begin()
    config.load_zcml(zcml_file)
    config.end()
    return config.make_wsgi_app()
Ejemplo n.º 15
0
class ViewTests(unittest.TestCase):
    def setUp(self):
        self.config = Configurator()
        self.config.begin()

    def tearDown(self):
        self.config.end()

    def test_my_view(self):
        from pyramidapp.views import my_view
        request = testing.DummyRequest()
        info = my_view(request)
        self.assertEqual(info['project'], 'pyramidapp')
Ejemplo n.º 16
0
def app(global_config, **settings):
    """ This function returns a WSGI application.
    
    It is usually called by the PasteDeploy framework during 
    ``paster serve``.
    """
    config = Configurator(root_factory=get_root, settings=settings)
    config.begin()
    config.add_view('myproject.views.my_view',
                    context='myproject.models.MyModel',
                    renderer='myproject:templates/mytemplate.pt')
    config.add_static_view('static', 'myproject:static')
    config.end()
    return config.make_wsgi_app()
Ejemplo n.º 17
0
class ViewWikiTests(unittest.TestCase):
    def setUp(self):
        self.config = Configurator()
        self.config.begin()

    def tearDown(self):
        self.config.end()
        
    def test_it(self):
        from tutorial.views import view_wiki
        self.config.add_route('view_page', '{pagename}')
        request = testing.DummyRequest()
        response = view_wiki(request)
        self.assertEqual(response.location, 'http://example.com/FrontPage')
Ejemplo n.º 18
0
class ViewTests(unittest.TestCase):
    def setUp(self):
        self.config = Configurator()
        self.config.begin()

    def tearDown(self):
        self.config.end()

    def test_my_view(self):
        from tutorial.views import my_view
        context = testing.DummyModel()
        request = testing.DummyRequest()
        info = my_view(context, request)
        self.assertEqual(info['project'], 'tutorial')
Ejemplo n.º 19
0
class ViewTests(unittest.TestCase):
    def setUp(self):
        self.config = Configurator()
        self.config.begin()

    def tearDown(self):
        self.config.end()

    def test_my_view(self):
        from academe.views import my_view

        request = testing.DummyRequest()
        info = my_view(request)
        self.assertEqual(info["project"], "academe")
Ejemplo n.º 20
0
def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """
    db_string = settings.get('db_string')
    if db_string is None:
        raise ValueError("No 'db_string' value in application configuration.")
    db_echo = settings.get('db_echo', 'false')
    initialize_sql(db_string, asbool(db_echo))
    config = Configurator(settings=settings)
    config.begin()
    config.add_static_view('static', 'tutorial:static')
    config.add_route('home', '/', view='tutorial.views.my_view',
                     view_renderer='templates/mytemplate.pt')
    config.end()
    return config.make_wsgi_app()
Ejemplo n.º 21
0
def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """
    zodb_uri = settings.get('zodb_uri')
    if zodb_uri is None:
        raise ValueError("No 'zodb_uri' in application configuration.")

    finder = PersistentApplicationFinder(zodb_uri, appmaker)
    def get_root(request):
        return finder(request.environ)
    config = Configurator(root_factory=get_root, settings=settings)
    config.begin()
    config.load_zcml('configure.zcml')
    config.end()
    return config.make_wsgi_app()
Ejemplo n.º 22
0
class TestMyView(unittest.TestCase):
    def setUp(self):
        self.config = Configurator()
        self.config.begin()
        _initTestingDB()

    def tearDown(self):
        self.config.end()

    def test_it(self):
        from tutorial.views import my_view
        request = testing.DummyRequest()
        info = my_view(request)
        self.assertEqual(info['root'].name, 'root')
        self.assertEqual(info['project'], 'tutorial')
Ejemplo n.º 23
0
def app(global_config, **settings):
    """ This function returns a WSGI application.
    
    It is usually called by the PasteDeploy framework during 
    ``paster serve``.
    """
    config = Configurator(settings=settings)
    config.begin()
    config.add_static_view('static', 'pyramidapp:static')
    config.add_route('home', '/',
                    view='pyramidapp.views.main_view',
                    view_renderer='pyramidapp:templates/mytemplate.pt')
    config.add_route('tab', '/tab/{name}',
                    view=view_tab)
    config.end()
    return config.make_wsgi_app()
Ejemplo n.º 24
0
def app(global_config, **settings):
    """ This function returns a WSGI application.
    
    It is usually called by the PasteDeploy framework during 
    ``paster serve``.
    """
    zodb_uri = settings.get('zodb_uri')
    if zodb_uri is None:
        raise ValueError("No 'zodb_uri' in application configuration.")
    finder = PersistentApplicationFinder(zodb_uri, appmaker)
    def get_root(request):
        return finder(request.environ)
    config = Configurator(root_factory=get_root, settings=settings)
    config.begin()
    config.load_zcml('configure.zcml')
    config.end()
    return config.make_wsgi_app()
Ejemplo n.º 25
0
class MyControllerTests(unittest.TestCase):
    def setUp(self):
        self.config = Configurator()
        self.config.begin()

    def tearDown(self):
        self.config.end()

    def _makeOne(self, request):
        from sparql_shim.handlers import MyHandler
        return MyHandler(request)

    def test_index(self):
        request = DummyRequest()
        controller = self._makeOne(request)
        info = controller.index()
        self.assertEqual(info['project'], 'sparql_shim')
Ejemplo n.º 26
0
def app(global_config, **settings):
    """ This function returns a WSGI application.
    
    It is usually called by the PasteDeploy framework during 
    ``paster serve``.
    """
    zcml_file = settings.get('configure_zcml', 'configure.zcml')
    db_string = settings.get('db_string')
    if db_string is None:
        raise ValueError(
            "No 'db_string' value in application configuration.")
    db_echo = settings.get('db_echo', 'false')
    initialize_sql(db_string, asbool(db_echo))
    config = Configurator(settings=settings)
    config.begin()
    config.load_zcml(zcml_file)
    config.end()
    return config.make_wsgi_app()
Ejemplo n.º 27
0
class ViewTests(unittest.TestCase):
    def setUp(self):
        self.config = Configurator()
        self.config.begin()

    def tearDown(self):
        self.config.end()

    def _make_root_with_results(self):
        root = testing.DummyModel()
        results = testing.DummyModel(__name__='results',
                                     __parent__=root)
        root['results'] = results
        return root

    def test_home_view(self):
        from bucket.views import home_view
        request = testing.DummyRequest()
        context = self._make_root_with_results()
        info = home_view(context, request)
        self.assertEqual('http://example.com/results/', info['results_url'])
        self.assertEqual('http://example.com/results/query.json',
                         info['all_json_url'])
        self.assertEqual('http://example.com/results/query.json'
                         '?category=People',
                         info['people_json_url'])

    def test_results_view(self):
        from bucket.views import results_view
        request = testing.DummyRequest()
        root = self._make_root_with_results()
        context = root['results']
        sample_result = testing.DummyModel(__name__='sample',
                                           __parent__=context)
        context['sample_result'] = sample_result
        info = results_view(context, request)
        info_results = info['results']
        self.assertEqual(1, len(info_results))
        result = info_results[0]
        self.assertEqual('http://example.com/results/sample_result/',
                         result['url'])
        self.failIf(result['item'] is None)
Ejemplo n.º 28
0
def app(global_config, **settings):
    """ This function returns a WSGI application.
    
    It is usually called by the PasteDeploy framework during 
    ``paster serve``.
    """
    db_string = settings.get('db_string')
    if db_string is None:
        raise ValueError("No 'db_string' value in application configuration.")
    db_echo = settings.get('db_echo', 'false')
    initialize_sql(db_string, asbool(db_echo))
    authn_policy = AuthTktAuthenticationPolicy(
        'sosecret', callback=groupfinder)
    authz_policy = ACLAuthorizationPolicy()
    config = Configurator(settings=settings,
                          root_factory='tutorial.models.RootFactory',
                          authentication_policy=authn_policy,
                          authorization_policy=authz_policy)
    config.begin()
    config.add_static_view('static', 'tutorial:static')
    config.add_route('view_wiki', '/', view='tutorial.views.view_wiki')
    config.add_route('login', '/login',
                     view='tutorial.login.login',
                     view_renderer='tutorial:templates/login.pt')
    config.add_route('logout', '/logout',
                     view='tutorial.login.logout')
    config.add_route('view_page', '/:pagename',
                     view='tutorial.views.view_page',
                     view_renderer='tutorial:templates/view.pt')
    config.add_route('add_page', '/add_page/:pagename',
                     view='tutorial.views.add_page',
                     view_renderer='tutorial:templates/edit.pt',
                     view_permission='edit')
    config.add_route('edit_page', '/:pagename/edit_page',
                     view='tutorial.views.edit_page',
                     view_renderer='tutorial:templates/edit.pt',
                     view_permission='edit')
    config.add_view('tutorial.login.login',
                    renderer='tutorial:templates/login.pt',
                    context='pyramid.exceptions.Forbidden')
    config.end()
    return config.make_wsgi_app()
Ejemplo n.º 29
0
class MyHandlerTests(unittest.TestCase):
    def setUp(self):
        from pyramid.configuration import Configurator
        from pylonshq.models import initialize_sql
        self.session = initialize_sql('sqlite://')
        self.config = Configurator()
        self.config.begin()

    def tearDown(self):
        self.config.end()

    def _makeOne(self, request):
        from pylonshq.handlers import MyHandler
        return MyHandler(request)

    def test_index(self):
        request = DummyRequest()
        handler = self._makeOne(request)
        info = handler.index()
        self.assertEqual(info['project'], 'pylonshq')
        self.assertEqual(info['root'].name, 'root')
Ejemplo n.º 30
0
def mailin_monitor_view(context, request):
    """
    Dispatches to a subapp from repoze.mailin.monitor.  I know this looks kind
    of horrible, but this is the best way I know how to mount another object
    graph onto the root object graph in BFG 1.2.  BFG 1.3 will theoretically
    allow SCRIPT_NAME/PATH_INFO rewriting for routes of the form
    '/some/path/*traverse', making it easier to do this with just a route,
    rather than actually constituting a whole new bfg app just to serve this
    subtree.
    """
    global _mailin_monitor_app
    if _mailin_monitor_app is None:
        # Keep imports local in hopes that this can be removed when BFG 1.3
        # comes out.
        from pyramid.authorization import ACLAuthorizationPolicy
        from pyramid.configuration import Configurator
        from karl.models.mailin_monitor import KarlMailInMonitor
        from karl.security.policy import get_groups
        from pyramid.authentication import RepozeWho1AuthenticationPolicy

        authentication_policy = RepozeWho1AuthenticationPolicy(
            callback=get_groups
        )
        authorization_policy = ACLAuthorizationPolicy()
        config = Configurator(root_factory=KarlMailInMonitor(),
                              authentication_policy=authentication_policy,
                              authorization_policy=authorization_policy)
        config.begin()
        config.load_zcml('repoze.mailin.monitor:configure.zcml')
        config.end()
        _mailin_monitor_app = config.make_wsgi_app()

    # Dispatch to subapp
    from pyramid.request import Request
    sub_environ = request.environ.copy()
    sub_environ['SCRIPT_NAME'] = '/%s/%s' % (resource_path(context),
                                            request.view_name)
    sub_environ['PATH_INFO'] = '/' + '/'.join(request.subpath)
    sub_request = Request(sub_environ)
    return sub_request.get_response(_mailin_monitor_app)
Ejemplo n.º 31
0
def app(global_config, **settings):
    """ This function returns a WSGI application.
    
    It is usually called by the PasteDeploy framework during 
    ``paster serve``.
    """
    
    zcml_file = settings.get('configure_zcml', 'configure.zcml')

    auth = RepozeWho1AuthenticationPolicy(identifier_name='basicauth')
    acl = ACLAuthorizationPolicy()

    config =  Configurator(
        root_factory=get_root,
        settings=settings,
        authorization_policy = acl,
        authentication_policy = auth,
        )
    config.begin()
    config.load_zcml(zcml_file)
    config.end() 
    return config.make_wsgi_app()
Ejemplo n.º 32
0
    try:
        form.validate(request)
    except formish.FormError, e:
        log.debug(e)
    except Exception, e:
        log.debug(e)

    return {'form':form, 'form2':form}

def goodbye_world(request):
    return Response('Goodbye world!')

class QuietHandler(simple_server.WSGIRequestHandler):
    def log_message(self, format, *args): pass

if __name__ == '__main__':
    import logging
    logging.basicConfig(level=logging.DEBUG)
    config = Configurator(settings={'reload_templates':True})
    config.begin()
    sm = zope.component.getSiteManager()
    sm.registerUtility([resource_filename('pyramid_uniform', 'templates/zpt')],
            pyramid_formish.IFormishSearchPath)
    config.add_static_view('static', 'pyramid_uniform:templates/static')
    config.add_view(sample_form, renderer="pyramid_uniform:templates/index.pt")
    config.end()
    app = config.make_wsgi_app()
    simple_server.make_server('', 9876, app, handler_class=QuietHandler).serve_forever()