MyToDoTasksWidget
A script that creates a table of all the ToDo tasks assigned to the current user.
- Type
- python
- Pack
- CommonWidgets
Source
import demistomock as demisto
from CommonServerPython import *
from dateparser import parse
MAX_ENTRIES = 30
def get_clickable_incident_id(incident_id):
incident_id_url = os.path.join("Custom/caseinfoid", incident_id)
if not is_xsiam_or_xsoar_saas():
incident_id_url = f"#/{incident_id_url}"
return f"[{incident_id}]({incident_id_url})"
def get_open_to_do_tasks_of_current_user() -> List[Dict]:
body = {
"dataType": "todos",
"query": 'assignee:"{me}" and status:"open"',
"widgetType": "table",
"size": MAX_ENTRIES,
}
todo_tasks_query_res = demisto.internalHttpRequest("POST", "/v2/statistics/widgets/query", json.dumps(body))
table = []
if todo_tasks_query_res.get("statusCode") == 200:
todo_tasks = json.loads(todo_tasks_query_res.get("body", "{}"))
todo_tasks_data = todo_tasks.get("data") or []
for task in todo_tasks_data:
if task.get("status", "") == "open": # table includes only open tasks
title = task.get("title", "")
description = task.get("description", "")
task_id = task.get("id", "")
if sla := task.get("dueDate", ""):
sla_dt = parse(sla)
assert sla_dt is not None, f"could not parse {sla}"
sla = sla_dt.strftime("%Y-%m-%d %H:%M:%S%z")
opened_by = task.get("dbotCreatedBy", "")
table.append(
{
"Task Name": title,
"Task Description": description,
"Task ID": task_id,
"SLA": sla,
"Opened By": opened_by,
"Incident ID": get_clickable_incident_id(incident_id=task.get("incidentId", "")),
}
)
else:
demisto.error(f"Failed running POST query to /v2/statistics/widgets/query.\n{todo_tasks_query_res!s}")
return table
def main(): # pragma: no cover
try:
results = get_open_to_do_tasks_of_current_user()
if len(results) >= MAX_ENTRIES:
table_name = f"My ToDo Tasks (First {MAX_ENTRIES} Tasks)"
else:
table_name = f"My ToDo Tasks ({len(results)})"
readable_output = tableToMarkdown(table_name, results, headers=list(results[0].keys()) if results else None)
cmd_results = {"Type": entryTypes["note"], "ContentsFormat": formats["markdown"], "Contents": readable_output}
return_results(cmd_results)
except Exception as e:
return_error(f"Failed to execute MyToDoTasksWidget Script. Error: {e!s}", e)
if __name__ in ("__main__", "__builtin__", "builtins"):
main()
README
A script that creates a table of all the ToDo tasks assigned to the current user.
Script Data
| Name | Description |
|---|---|
| Script Type | python3 |
| Tags | widget |
| Cortex XSOAR Version | 6.1.0 |
Inputs
There are no inputs for this script.
Outputs
Human Readable Output
My ToDo Tasks (1)
Task Name Task Description Task ID SLA Opened By Incident ID task task description 1@1 0001-01-01 00:00:00+0000 user 1