From 405b6576d0aa23b0f935ba629cad8f36b2c0043c Mon Sep 17 00:00:00 2001 From: Aaron Peterson Date: Thu, 16 Nov 2023 14:14:47 -0800 Subject: [PATCH] Fix unique tasks and sort/filtering in report output (#1395) * Move unique task check * Add sorting to request summary * Add default priority filter for task --- .../api/cli/turbinia_client/core/commands.py | 2 +- .../cli/turbinia_client/helpers/formatter.py | 48 +++++++++---------- 2 files changed, 24 insertions(+), 26 deletions(-) diff --git a/turbinia/api/cli/turbinia_client/core/commands.py b/turbinia/api/cli/turbinia_client/core/commands.py index 1ced5cf4e..6d5fab5bc 100644 --- a/turbinia/api/cli/turbinia_client/core/commands.py +++ b/turbinia/api/cli/turbinia_client/core/commands.py @@ -275,7 +275,7 @@ def get_task( formatter.echo_json(api_response) else: report = formatter.TaskMarkdownReport(api_response).generate_markdown( - show_all=show_all) + show_all=show_all, priority_filter=100) click.echo(report) except exceptions.ApiException as exception: log.error( diff --git a/turbinia/api/cli/turbinia_client/helpers/formatter.py b/turbinia/api/cli/turbinia_client/helpers/formatter.py index bf90a3995..273747413 100644 --- a/turbinia/api/cli/turbinia_client/helpers/formatter.py +++ b/turbinia/api/cli/turbinia_client/helpers/formatter.py @@ -329,7 +329,10 @@ def generate_markdown( report.append('') else: report.append('No saved files') - report.append('') + + if priority <= priority_filter: + report.append('') + except TypeError as exception: log.warning(f'Error formatting the Markdown report: {exception!s}') @@ -347,27 +350,9 @@ def __init__(self, request_data: dict): sorted_tasks = sorted( request_data.get('tasks'), key=lambda x: - (x['report_priority'], x['name'])) + (x['report_priority'] if x['report_priority'] else 0, x['name'])) - tasks = [TaskMarkdownReport(task) for task in sorted_tasks] - task_counter = defaultdict(int) - unique_tasks = [] - filtered_tasks = [] - - # Get unique tasks and task counts - for task in tasks: - task_counter[task] += 1 - if task not in unique_tasks: - unique_tasks.append(task) - - # Generate task list with counts - for task in unique_tasks: - if task_counter[task] > 1: - filtered_tasks.append(f'{task} ({task_counter[task]}x)') - else: - filtered_tasks.append(task) - - self.add_components(filtered_tasks) + self.add_components([TaskMarkdownReport(task) for task in sorted_tasks]) def add(self, component: MarkdownReportComponent) -> None: if component: @@ -419,10 +404,21 @@ def generate_markdown(self, priority_filter=None, show_all=False) -> str: except TypeError as exception: log.warning(f'Error formatting the Markdown report: {exception!s}') + task_counter = defaultdict(int) + unique_tasks = [] for task in self.components: - report.append( - task.generate_markdown( - priority_filter=priority_filter, show_all=show_all, compact=True)) + markdown = task.generate_markdown( + priority_filter=priority_filter, show_all=show_all, compact=True) + task_counter[markdown] += 1 + if markdown not in unique_tasks: + unique_tasks.append(markdown) + + # Generate task list with counts + for task in unique_tasks: + if task_counter[task] > 1: + report.append(f'{task} ({task_counter[task]}x)') + else: + report.append(task) self.report = '\n'.join(report) return self.report @@ -446,7 +442,9 @@ def generate_markdown(self) -> str: if not requests_status_list: return '## No requests found.' - for request_dict in requests_status_list: + sorted_requests = sorted( + requests_status_list, key=lambda x: x['last_task_update_time']) + for request_dict in sorted_requests: request_report = RequestMarkdownReport(request_dict).generate_markdown() report.append(request_report)