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.
