Thanks aj, I will keep that in mind. (I will probably also need to access
from matchdict).

On Thu, Dec 30, 2010 at 8:29 AM, aj <[email protected]> wrote:

> I just had to solve a similar problem and I decided against using a
> subscriber.
> In my case I have to obtain additional context information like the
> collection from the request
> (exposed through the matchdict through URL dispatching). However URL
> dispatching seems to occur
> after calling the subscriber code. So I moved the connection handling
> into a base class used
> for several handlers.
>
> -aj
>
> On 29 Dez., 07:37, Chris McDonough <[email protected]> wrote:
> > Here's some code I use to set up a Mongo connection on the root for each
> > request (along with some other stuff):
> >
> > """
> > from pyramid.authentication import AuthTktAuthenticationPolicy
> > from pyramid.config import Configurator
> > from pyramid.events import subscriber
> > from pyramid.events import NewRequest
> > from pyramid.security import Allow
> > from pyramid.security import Authenticated
> > from pyramid.security import authenticated_userid
> >
> > from pyramid_beaker import session_factory_from_settings
> >
> > from gridfs import GridFS
> > import pymongo
> >
> > class API(object):
> >     """ All 'API' objects are used by renderer_globals_factory """
> >     def __init__(self, context, request):
> >         self.context = context
> >         self.request = request
> >
> > class UserAPI(API):
> >     @property
> >     def name(self):
> >         return authenticated_userid(self.request)
> >
> > def globals_factory(system):
> >     request, context = system['request'], system['context']
> >     return {
> >         'user':UserAPI(context, request),
> >         # .. other "API" objects
> >         }
> >
> > class Root(object):
> >     __acl__ = ((Allow, Authenticated,
> > 'something_only_authenticated_can_do'),)
> >     def __init__(self, request):
> >         self.request = request
> >
> > def main(global_config, **settings):
> >     authn_policy = AuthTktAuthenticationPolicy('seekriT')
> >
> >     config = Configurator(settings=settings,
> >                           authentication_policy=authn_policy,
> >                           root_factory=Root)
> >     config.scan('mypackage')
> >
> >     config.add_static_view('static', 'mypackage:static/',
> >                            cache_max_age=86400)
> >
> >     config.registry.mongo_conn = pymongo.Connection(settings['db_uri'])
> >
> >     session_factory = session_factory_from_settings(settings)
> >     config.set_session_factory(session_factory)
> >     config.set_renderer_globals_factory(globals_factory)
> >
> >     config.include(add_routes)
> >
> >     return config.make_wsgi_app()
> >
> > def add_routes(config):
> >     config.add_route('dashboard', '/')
> >     # .. other routes ...
> >
> > @subscriber(NewRequest)
> > def add_mongo_db(event):
> >     reg = event.request.registry
> >     settings = reg.settings
> >     db_name = settings['db_name']
> >     db = reg.mongo_conn[db_name]
> >     event.request.db = db
> >     event.request.fs = GridFS(db)
> > """
> >
> > The Mongo database is then available as request.db in every view.
> >
> > Authentication/authorization is normal Pyramid stuff.  The code above
> > sets a root object with a single ACL.  You can get fancier as necessary.
> >
> > - C
> >
> >
> >
> >
> >
> >
> >
> > On Tue, 2010-12-28 at 21:49 -0800, Detectedstealth wrote:
> > > Does anyone know of any tutorial or basic details on integrating these
> > > two? Need to know basic integration along with Authentication.
> >
> > > I don't expect code just pointed into the right direction. Starting my
> > > first Pyramid app.
>
> --
> You received this message because you are subscribed to the Google Groups
> "pylons-discuss" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<pylons-discuss%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/pylons-discuss?hl=en.
>
>


-- 
-- 
Regards,
Bruce Wade
http://ca.linkedin.com/in/brucelwade
http://www.wadecybertech.com
http://www.warplydesigned.com
http://www.fitnessfriendsfinder.com

-- 
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/pylons-discuss?hl=en.

Reply via email to