GetRolesPerShift
Retrieves the roles that are available per shift.
- Type
- python
- Pack
- ShiftManagement
Source
import demistomock as demisto
from CommonServerPython import *
from CommonServerUserPython import *
HOURS_DAYS_HEADER = "Hours / Days"
SUNDAY_HEADER = "Sunday"
MONDAY_HEADER = "Monday"
TUESDAY_HEADER = "Tuesday"
WEDNESDAY_HEADER = "Wednesday"
THURSDAY_HEADER = "Thursday"
FRIDAY_HEADER = "Friday"
SATURDAY_HEADER = "Saturday"
DAY_NUM_TO_DAY_HEADER = {
0: SUNDAY_HEADER,
1: MONDAY_HEADER,
2: TUESDAY_HEADER,
3: WEDNESDAY_HEADER,
4: THURSDAY_HEADER,
5: FRIDAY_HEADER,
6: SATURDAY_HEADER,
}
def hour_in_shift(day, hour, shift):
check_time_bottom = day * 24 * 60 + hour * 60
check_time_top = day * 24 * 60 + hour * 60 + 59
shift_from_time = shift.get("fromDay", 0) * 24 * 60 + shift.get("fromHour", 0) * 60 + shift.get("fromMinute", 0)
shift_to_time = shift.get("toDay", 0) * 24 * 60 + shift.get("toHour", 0) * 60 + shift.get("toMinute", 0)
return (shift_from_time <= check_time_bottom < shift_to_time) or (shift_from_time <= check_time_top < shift_to_time)
def main():
get_roles_response: list = demisto.executeCommand("getRoles", {})
if is_error(get_roles_response):
demisto.error(f"Failed to get roles: {get_error(get_roles_response)!s}")
else:
roles = get_roles_response[0]["Contents"]
shifts_table = [
{
HOURS_DAYS_HEADER: f"__{hour}:00 - {hour + 1}:00__",
SUNDAY_HEADER: "",
MONDAY_HEADER: "",
TUESDAY_HEADER: "",
WEDNESDAY_HEADER: "",
THURSDAY_HEADER: "",
FRIDAY_HEADER: "",
SATURDAY_HEADER: "",
}
for hour in range(24)
]
for day in range(7):
for hour in range(24):
collected_roles = []
for role in roles:
role_name = role.get("name", "")
shifts = role.get("shifts") or []
for shift in shifts:
if hour_in_shift(day, hour, shift):
collected_roles.append(role_name)
break
shifts_table[hour][DAY_NUM_TO_DAY_HEADER[day]] = ", ".join(collected_roles)
widget = TextWidget(
text="Roles Per Shift\n"
+ tableToMarkdown(
name="",
t=shifts_table,
headers=[
HOURS_DAYS_HEADER,
SUNDAY_HEADER,
MONDAY_HEADER,
TUESDAY_HEADER, # disable-secrets-detection
WEDNESDAY_HEADER,
THURSDAY_HEADER,
FRIDAY_HEADER,
SATURDAY_HEADER,
],
)
)
return_results(widget)
if __name__ in ("__builtin__", "builtins", "__main__"):
main()
README
Retrieves the roles that are available per shift.
Script Data
| Name | Description |
|---|---|
| Script Type | python3 |
| Tags | Shift Management, widget |
| Cortex XSOAR Version | 5.5.0 |
Inputs
There are no inputs for this script.
Outputs
There are no outputs for this script.