Skip to content

Commit

Permalink
Fix unique tasks and sort/filtering in report output (#1395)
Browse files Browse the repository at this point in the history
* Move unique task check

* Add sorting to request summary

* Add default priority filter for task
  • Loading branch information
aarontp authored Nov 16, 2023
1 parent 81e6981 commit 405b657
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 26 deletions.
2 changes: 1 addition & 1 deletion turbinia/api/cli/turbinia_client/core/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
48 changes: 23 additions & 25 deletions turbinia/api/cli/turbinia_client/helpers/formatter.py
Original file line number Diff line number Diff line change
Expand Up @@ -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}')

Expand All @@ -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:
Expand Down Expand Up @@ -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
Expand All @@ -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)

Expand Down

0 comments on commit 405b657

Please sign in to comment.