On Fri, 2011-01-28 at 16:13 -0800, oO wrote:
> I though I'd share some of the things I'm discovering as I'm
> attempting to write a MongoDB+Pyramid application. I'm implementing a
> traversal based system, which may or may not be the right approach,
> but at least it forced me to start with the default pyramid_starter
> template which doesn't have dependencies on ZODB or SQLAlchemy as a
> startinging point.
> 
> Documentation is a bit lacking on the whole custom renderer thing,
> specially with what renderers are supposed to be doing. At first I
> thought I would have to be creating and using a Response object, but
> it doesn't seem it's the case.
> 
> In my __init__.py file
> 
>       ...
>       #Create the application configurator
>       config = Configurator(root_factory=get_root, settings=settings)
>       # Add custom renderers
>       config.add_renderer('mongo_json',
> 'pyramidtest.renderers.MongoJSONRenderer')
>       # Add views
>       config.add_view('pyramidtest.views.json_view', name='',
> renderer='mongo_json')
>       ...
> 
> created a new renderers.py file
> 
> import json
> from pymongo import json_util
> 
> class MongoJSONRenderer:
>       def __init__(self, info):
>               """ Constructor: info will be an object having the the
>               following attributes: name (the renderer name), package
>               (the package that was 'current' at the time the
>               renderer was registered), type (the renderer type
>               name), registry (the current application registry) and
>               settings (the deployment settings dictionary).  """
> 
> 
>       def __call__(self, value, system):
>               """ Call a the renderer implementation with the value
>               and the system value passed in as arguments and return
>               the result (a string or unicode object).  The value is
>               the return value of a view.      The system value is a
>               dictionary containing available system values
>               (e.g. view, context, and request). """
>               request = system.get('request')
>               if request is not None:
>                       if not hasattr(request, 'response_content_type'):
>                               request.response_content_type = 
> 'application/json'
>               return json.dumps(value, default=json_util.default)
> 
> 
> Is this right? it seems to work, but I'm not sure it's the best way to
> implement that.

That looks fine.

- C


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

Reply via email to