def send_trading_model_callback()

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


def send_trading_model_callback(keycloak_access_token: str, recepient: str, public: bool = False) -> Tuple[int, str]:
    # if not check_trading_rule_title():
    #     return -1, "Trading rule title is empty"

    if not re.match(EMAIL_REGEXP, recepient):
        return -1, f"Email {recepient} is invalid."

    request_headers = {
        "Authorization": "Bearer " + keycloak_access_token,
        "Content-Type": "application/json",
    }

    request_body = {
        "model": st.session_state["engine"],
        "title": st.session_state["trading_rule_title"],
        "user_id": st.session_state.keycloak_session.user_info["email"],
        "data_source": st.session_state.provider,
        "datasets": st.session_state.get("datasets_keys", None),
        "periodicity": string_to_ms(st.session_state.data_periodicity),
        "time_range": string_to_ms(st.session_state.time_period_),
        "tickers_prompt": st.session_state.tradable_symbols_prompt,
        "tickers": list(st.session_state["true_symbols"].values()),
        "account_for_dividends": st.session_state.get("use_dividends_trading", False),
        "active": True,
        "end_time": None,
        "indicators_prompt": PROMPTS_SEPARATOR.join(st.session_state["indicators_dialogue"]),
        "indicators_logic": st.session_state["indicators_code"],
        "trading_prompt": PROMPTS_SEPARATOR.join(st.session_state["trading_dialogue"]),
        "trading_logic": st.session_state.get("trading_code", ""),
        "account_currency": st.session_state["actual_currency"],
        "bet_size": str(st.session_state["bet_size"]),
        "total_gross_limit": st.session_state["total_gross_limit"],
        "per_instrument_gross_limit": st.session_state["per_instrument_gross_limit"],
        "nop_limit": st.session_state["nop_limit"],
        "description": st.session_state["model_descr"],
        "trade_fill_price": st.session_state["fill_trade_price"]
        if st.session_state.get("fill_trade_price", "") is not None
        else "",
        "execution_cost_bps": str(st.session_state["execution_cost_bps"]),
    }

    if not public:
        resp = requests.post(
            f"{ALERTS_BACKEND_SERVICE_URL}/api/v0/trading-info/share?destination={recepient}",
            json=request_body,
            headers=request_headers,
        )
    # TODO: fix this
    return resp.status_code, resp.text