Always use JSON renderer for OPTIONS requests in browsable API, override default renderer.

This commit is contained in:
Chris Church 2014-04-01 20:51:15 -04:00
parent 762e8656c5
commit 0b3d056c16
3 changed files with 11 additions and 3 deletions

View File

@ -9,6 +9,13 @@ class BrowsableAPIRenderer(renderers.BrowsableAPIRenderer):
Customizations to the default browsable API renderer.
'''
def get_default_renderer(self, view):
renderer = super(BrowsableAPIRenderer, self).get_default_renderer(view)
# Always use JSON renderer for browsable OPTIONS response.
if view.request.method == 'OPTIONS' and not isinstance(renderer, renderers.JSONRenderer):
return renderers.JSONRenderer()
return renderer
def get_rendered_html_form(self, view, method, request):
'''Never show auto-generated form (only raw form).'''
obj = getattr(view, 'object', None)

View File

@ -457,10 +457,10 @@ class UnifiedJobStdoutSerializer(UnifiedJobSerializer):
fields = ('result_stdout',)
def get_types(self):
if type(self) is UnifiedJobSerializer:
if type(self) is UnifiedJobStdoutSerializer:
return ['project_update', 'inventory_update', 'job']
else:
return super(UnifiedJobSerializer, self).get_types()
return super(UnifiedJobStdoutSerializer, self).get_types()
def to_native(self, obj):
ret = super(UnifiedJobStdoutSerializer, self).to_native(obj)

View File

@ -1417,7 +1417,8 @@ class UnifiedJobStdout(RetrieveAPIView):
serializer_class = UnifiedJobStdoutSerializer
renderer_classes = [BrowsableAPIRenderer, renderers.StaticHTMLRenderer,
PlainTextRenderer, AnsiTextRenderer]
PlainTextRenderer, AnsiTextRenderer,
renderers.JSONRenderer]
filter_backends = ()
new_in_148 = True