From ac39c69da0efb606b596dff961682d00b42c29bd Mon Sep 17 00:00:00 2001 From: Andrew Tonko Date: Tue, 29 Nov 2016 11:38:11 -0800 Subject: [PATCH 1/3] avoid repetition of media_type's in options metadata --- rest_framework/metadata.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rest_framework/metadata.py b/rest_framework/metadata.py index 410acd0e2..0bb52cab2 100644 --- a/rest_framework/metadata.py +++ b/rest_framework/metadata.py @@ -63,8 +63,8 @@ class SimpleMetadata(BaseMetadata): metadata = OrderedDict() metadata['name'] = view.get_view_name() metadata['description'] = view.get_view_description() - metadata['renders'] = [renderer.media_type for renderer in view.renderer_classes] - metadata['parses'] = [parser.media_type for parser in view.parser_classes] + metadata['renders'] = list(set(renderer.media_type for renderer in view.renderer_classes)) + metadata['parses'] = list(set(parser.media_type for parser in view.parser_classes)) if hasattr(view, 'get_serializer'): actions = self.determine_actions(request, view) if actions: From 98cde59d24c30659c7657aa2b38a0f9cccce5f22 Mon Sep 17 00:00:00 2001 From: Andrew Tonko Date: Tue, 29 Nov 2016 11:54:59 -0800 Subject: [PATCH 2/3] Fixed unit tests --- rest_framework/metadata.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/rest_framework/metadata.py b/rest_framework/metadata.py index 0bb52cab2..ff627c3b3 100644 --- a/rest_framework/metadata.py +++ b/rest_framework/metadata.py @@ -63,8 +63,14 @@ class SimpleMetadata(BaseMetadata): metadata = OrderedDict() metadata['name'] = view.get_view_name() metadata['description'] = view.get_view_description() - metadata['renders'] = list(set(renderer.media_type for renderer in view.renderer_classes)) - metadata['parses'] = list(set(parser.media_type for parser in view.parser_classes)) + renders = OrderedDict() + for renderer in view.renderer_classes: + renders[renderer.media_type] = True + metadata['renders'] = renders.keys() + parses = OrderedDict() + for parser in view.parser_classes: + parses[parser.media_type] = True + metadata['parses'] = parses.keys() if hasattr(view, 'get_serializer'): actions = self.determine_actions(request, view) if actions: From 8e2408c4d4f7a93f1037ee9a97bce3e12a3e6e65 Mon Sep 17 00:00:00 2001 From: Andrew Tonko Date: Tue, 29 Nov 2016 11:58:37 -0800 Subject: [PATCH 3/3] Fixed all tests --- rest_framework/metadata.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rest_framework/metadata.py b/rest_framework/metadata.py index ff627c3b3..982624ae6 100644 --- a/rest_framework/metadata.py +++ b/rest_framework/metadata.py @@ -66,11 +66,11 @@ class SimpleMetadata(BaseMetadata): renders = OrderedDict() for renderer in view.renderer_classes: renders[renderer.media_type] = True - metadata['renders'] = renders.keys() + metadata['renders'] = list(renders.keys()) parses = OrderedDict() for parser in view.parser_classes: parses[parser.media_type] = True - metadata['parses'] = parses.keys() + metadata['parses'] = list(parses.keys()) if hasattr(view, 'get_serializer'): actions = self.determine_actions(request, view) if actions: