From 23da7e360533d166eaccd70a39502625d461ae75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Wed, 7 Dec 2016 09:37:07 +0100 Subject: [PATCH] api: truncate output in html preview --- src/c3nav/api/__init__.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/c3nav/api/__init__.py b/src/c3nav/api/__init__.py index 422429ab..467e5c74 100644 --- a/src/c3nav/api/__init__.py +++ b/src/c3nav/api/__init__.py @@ -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