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