diff --git a/awx/api/renderers.py b/awx/api/renderers.py index 125c3f6cfc..9ccf3c1eb4 100644 --- a/awx/api/renderers.py +++ b/awx/api/renderers.py @@ -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) diff --git a/awx/api/serializers.py b/awx/api/serializers.py index 0d2cd22829..f4d0669cba 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -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) diff --git a/awx/api/views.py b/awx/api/views.py index 214e2ce5b4..1267cbcea9 100644 --- a/awx/api/views.py +++ b/awx/api/views.py @@ -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