Add absolute end value for limited json stdout view

This commit is contained in:
Matthew Jones 2014-06-26 11:20:47 -04:00
parent 745eb00b3f
commit d4ef57bab6
2 changed files with 6 additions and 5 deletions

View File

@ -1707,7 +1707,7 @@ class UnifiedJobStdout(RetrieveAPIView):
dark_bg = (content_only and dark) or (not content_only and (dark or not dark_val))
conv = Ansi2HTMLConverter(scheme=scheme, dark_bg=dark_bg,
title=get_view_name(self.__class__))
content, start, end = unified_job.result_stdout_raw_limited(start_line, end_line)
content, start, end, absolute_end = unified_job.result_stdout_raw_limited(start_line, end_line)
if content_only:
headers = conv.produce_headers()
body = conv.convert(content, full=False)
@ -1719,7 +1719,7 @@ class UnifiedJobStdout(RetrieveAPIView):
data = data.replace('.body_background { background-color: #AAAAAA; }',
'.body_background { background-color: #f5f5f5; }')
if request.accepted_renderer.format == 'json':
return Response({'range': {'start': start, 'end': end}, 'content': body})
return Response({'range': {'start': start, 'end': end, 'absolute_end': absolute_end}, 'content': body})
return Response(data)
elif request.accepted_renderer.format == 'ansi':
return Response(unified_job.result_stdout_raw)

View File

@ -524,6 +524,7 @@ class UnifiedJob(PolymorphicModel, PasswordFieldsModel, CommonModelNameNotUnique
if end_line is not None:
end_line = int(end_line)
stdout_lines = self.result_stdout_raw_handle().readlines()
absolute_end = len(stdout_lines)
for line in stdout_lines[int(start_line):end_line]:
return_buffer += line
if int(start_line) < 0:
@ -535,12 +536,12 @@ class UnifiedJob(PolymorphicModel, PasswordFieldsModel, CommonModelNameNotUnique
end_actual = min(int(start_line)+int(end_line), len(stdout_lines))
else:
end_actual = len(stdout_lines)
return return_buffer, start_actual, end_actual
return return_buffer, start_actual, end_actual, absolute_end
def result_stdout_limited(self, start_line=0, end_line=None):
ansi_escape = re.compile(r'\x1b[^m]*m')
content, start, end = self.result_stdout_raw_limited(start_line, end_line)
return ansi_escape.sub('', content), start, end
content, start, end, absolute_end = self.result_stdout_raw_limited(start_line, end_line)
return ansi_escape.sub('', content), start, end, absolute_end
@property
def celery_task(self):