import demistomock as demisto # noqa: F401 from CommonServerPython import * # noqa: F401 def create_impacted_assets_html(impacted_assets_data: dict, alert_url: str) -> str: """ Create HTML content for the impacted assets. :type impacted_assets_data: ``dict`` :param impacted_assets_data: Impacted Assets data. :type alert_url: ``str`` :param alert_url: Alert URL. :rtype: ``str`` :return: HTML content for the impacted assets. """ html_content = [] def append_section(icon: str, header: str, sub_header: str) -> None: html_content.append('
' # noqa: E231,E702 f"{distance_from_event} km from {name}
" ) else: header = f'{name}
' # noqa: E231,E702 sub_header = f'{address}
' # noqa: E231,E702 append_section( '{name}
' # noqa: E231,E702 sub_header = f'{url}
' # noqa: E231,E702 append_section( '' # noqa: E231,E702 f"{distance_from_event} km from {travelers_count} " f'{"traveler" if int(travelers_count) == 1 else "travelers"}
' ) else: header = ( '' # noqa: E231,E702 f'{travelers_count} {"traveler" if int(travelers_count) == 1 else "travelers"} ' "at risk
" ) sub_header = f'{name}
' # noqa: E231,E702 if travel_type.lower() == "hotel": append_section( 'View employee and traveler locations ' # noqa: E231,E702 "in the vicinity with Dataminr Pulse: " f'{alert_url}' ) html_content.append(incident_footer) impacted_assets_html = "".join(html_content) return impacted_assets_html def main(): try: impacted_assets_data = demisto.incident().get("CustomFields", {}).get("dataminrpulseimpactedassetstext", "") alert_url = demisto.incident().get("CustomFields", {}).get("dataminrpulseexpandalerturl", "") if not impacted_assets_data: return_results( { "ContentsFormat": EntryFormat.HTML, "Type": EntryType.NOTE, "Contents": "
N/A
", # noqa: E231,E702 } ) return else: try: impacted_assets_data = json.loads(impacted_assets_data) except json.JSONDecodeError: raise ValueError('Failed to parse "Dataminr Pulse Impacted Assets" JSON string.') if not isinstance(impacted_assets_data, dict): raise ValueError("Invalid format for impacted assets data.") impacted_assets_html = create_impacted_assets_html(impacted_assets_data, alert_url) if not impacted_assets_html: return_results( { "ContentsFormat": EntryFormat.HTML, "Type": EntryType.NOTE, "Contents": "N/A
", # noqa: E231,E702 } ) return html_content_start = '