summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Merickel <michael@merickel.org>2015-02-06 01:01:32 -0600
committerMichael Merickel <michael@merickel.org>2015-02-06 01:01:32 -0600
commitfcb6cc082ea537b046df4b958f885f6a50b18d72 (patch)
treef59c3854419f59d0a7effa58934a0cff443cbfcc
parent42075618568881a36d9fb03812a0e651d1c084ce (diff)
downloadpyramid-fcb6cc082ea537b046df4b958f885f6a50b18d72.tar.gz
pyramid-fcb6cc082ea537b046df4b958f885f6a50b18d72.tar.bz2
pyramid-fcb6cc082ea537b046df4b958f885f6a50b18d72.zip
fix #1535 by avoiding the request if it's None
-rw-r--r--pyramid/renderers.py24
-rw-r--r--pyramid/tests/test_renderers.py6
2 files changed, 18 insertions, 12 deletions
diff --git a/pyramid/renderers.py b/pyramid/renderers.py
index d840cc317..3c35551ea 100644
--- a/pyramid/renderers.py
+++ b/pyramid/renderers.py
@@ -24,7 +24,7 @@ from pyramid.events import BeforeRender
from pyramid.path import caller_package
-from pyramid.response import Response, _get_response_factory
+from pyramid.response import _get_response_factory
from pyramid.threadlocal import get_current_registry
# API
@@ -355,19 +355,19 @@ class JSONP(JSON):
``self.param_name`` is present in request.GET; otherwise returns
plain-JSON encoded string with content-type ``application/json``"""
def _render(value, system):
- request = system['request']
+ request = system.get('request')
default = self._make_default(request)
val = self.serializer(value, default=default, **self.kw)
- callback = request.GET.get(self.param_name)
- if callback is None:
- ct = 'application/json'
- body = val
- else:
- ct = 'application/javascript'
- body = '%s(%s);' % (callback, val)
- response = request.response
- if response.content_type == response.default_content_type:
- response.content_type = ct
+ ct = 'application/json'
+ body = val
+ if request is not None:
+ callback = request.GET.get(self.param_name)
+ if callback is not None:
+ ct = 'application/javascript'
+ body = '%s(%s);' % (callback, val)
+ response = request.response
+ if response.content_type == response.default_content_type:
+ response.content_type = ct
return body
return _render
diff --git a/pyramid/tests/test_renderers.py b/pyramid/tests/test_renderers.py
index 30fdef051..6d79cc291 100644
--- a/pyramid/tests/test_renderers.py
+++ b/pyramid/tests/test_renderers.py
@@ -602,6 +602,12 @@ class TestJSONP(unittest.TestCase):
self.assertEqual(request.response.content_type,
'application/json')
+ def test_render_without_request(self):
+ renderer_factory = self._makeOne()
+ renderer = renderer_factory(None)
+ result = renderer({'a':'1'}, {})
+ self.assertEqual(result, '{"a": "1"}')
+
class Dummy:
pass