api: truncate output in html preview

This commit is contained in:
Laura Klünder 2016-12-07 09:37:07 +01:00
parent 5c91e99ab7
commit 23da7e3605

View file

@ -11,7 +11,17 @@ orig_render = JSONRenderer.render
def nicer_renderer(self, data, accepted_media_type=None, renderer_context=None):
if self.get_indent(accepted_media_type, renderer_context) is None:
return orig_render(self, data, accepted_media_type, renderer_context)
return json_encoder_reindent(lambda d: orig_render(self, d, accepted_media_type, renderer_context), data)
shorten = isinstance(data, (list, tuple)) and len(data) > 2
orig_len = None
if shorten:
orig_len = len(data)-2
data = data[:2]
result = json_encoder_reindent(lambda d: orig_render(self, d, accepted_media_type, renderer_context), data)
if shorten:
result = (result[:-2] +
('\n ...%d more elements (truncated for HTML preview)...' % orig_len).encode() +
result[-2:])
return result
# Monkey patch for nicer indentation in the django rest framework