def alert_edit_callback()

in src/backend/entrypoints/streamlit_frontend/state.py [0:0]


def alert_edit_callback(alert_id, keycloak_access_token):
    # Get alert info for session restoring
    request_headers = {"Authorization": f"Bearer {keycloak_access_token}"}

    alert_json = requests.get(f"{ALERTS_BACKEND_SERVICE_URL}/api/v0/alerts/{alert_id}", headers=request_headers)

    if alert_json.status_code != 200:
        raise ConnectionError(f"Cant obtain alert \n{alert_json.content}")

    alert = json.loads(alert_json.content)

    # Full current session clear
    st.session_state.clear()

    restore_indicators(alert)

    # Call alert step to restore fields that are not presented in the alert json
    alerts_dialogue = alert["alerts_prompt"].split(PROMPTS_SEPARATOR)
    st.session_state["alerts_dialogue"] = alerts_dialogue
    alert_step(st.session_state)

    # Restore alert creation fields
    st.session_state["alert_title"] = alert["title"]

    for trigger_type_index, trigger_type in enumerate(TRIGGER_TYPES.values()):
        if trigger_type == alert["trigger_type"]:
            break

    st.session_state["trigger_type_index"] = trigger_type_index
    st.session_state["alert_message"] = alert["alert_text_template"]
    st.session_state["alert_email_receivers"] = alert["alert_emails"]

    # Restore timezone and activation time if periodicity == 1 day (86400000 ms)
    if alert["periodicity"] == 86400000:
        available_timezones = alerts_backend_proxy_singleton.get_available_timezones()

        for index, zone in enumerate(available_timezones):
            if zone == alert["time_zone"]:
                break

        st.session_state["timezone_index"] = index

        st.session_state["trigger_time"] = convert_ms_to_activation_time(alert["activation_time"])
    # Don't know why, but this thing switches to the first tab, which we exactly need
    st.empty()