Problems with custom render functions and missing JSONP support #2

Closed
pedersen opened this Issue Sep 24, 2012 · 5 comments

Projects

None yet

2 participants

@pedersen
Member

This issue existed in Trac. The original can be viewed at http://trac.turbogears.org/ticket/2513

This issue existed on SourceForge. The original can be viewed at https://sourceforge.net/p/turbogears2/tickets/49

@pedersen
Member

Original Author: pedersen, Original Timestamp: 2011-03-28 02:47:03.024000

Original Body: Currently, TG 2.1rc1 does not come with a templating engine for JSONP.

You can add a render function this:

from tg import json_encode, response
from tg.render import _get_tg_vars

def render_jsonp(template_name, template_vars, **kwargs):
callback = template_name or kwargs.pop('callback', None) or 'callback'
for key in _get_tg_vars():
del template_vars[key]
response.headers['Content-Type'] = 'text/javascript'
return '%s(%s)' % (template_name, json_encode(template_vars))

from myapp.config.app_cfg import base_config
base_config.render_functions['jsonp'] = render_jsonp
base_config.mimetype_lookup = {'.jsonp': 'text/javascript'}

But this reveals two shortcomings:

  1. In this case, we don't want any templating vars, and need to remove them using the undocumented function _get_tg_vars(). It would be better and more performant if the templating vars would not be included in the first place. But unfortunately, the templating engines which don't use templating vars are hard coded in TG (currently 'json' and 'amf') in two places in tg.decorators and tg.render. This should be made configurable.
  2. I don't see a way of defining a default content type for the render function, so I have to set it directly on the response object which is really not nice. The render functions should not touch the request or response objects.
  3. After fixing 1. and 2. we may think about adding a JSONP renderer to the core.
@pedersen
Member

Original Author: pedersen, Original Timestamp: 2011-06-11 20:45:10.005000

Original Body: - milestone: 2.1.1 --> 2.2.0

@pedersen
Member

Original Author: pedersen, Original Timestamp: 2012-08-24 01:39:59.712000

Original Body: - version: 2.1.0 --> 2.1.5

  • milestone: 2.2.0 --> 2.3.0
@amol-
Member
amol- commented Mar 3, 2014

4bad6da provides support for JSONP renderer, previous commits provided support for 1. and 2.

@amol- amol- closed this Mar 3, 2014
@amol-
Member
amol- commented Mar 3, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment