in src/backend/entrypoints/streamlit_frontend/state.py [0:0]
def trading_rule_edit_callback(trading_id, keycloak_access_token, is_public=False):
request_headers = {"Authorization": f"Bearer {keycloak_access_token}"}
public = "public/" if is_public else ""
trading_json = requests.get(f"{ALERTS_BACKEND_SERVICE_URL}/api/v0/trading-info/{public}{trading_id}", headers=request_headers)
if trading_json.status_code != 200:
raise ConnectionError(f"Cant obtain trading rule \n{trading_json.content}")
trading = json.loads(trading_json.content)
# Full current session clear
keycloak_session = st.session_state.keycloak_session
st.session_state.clear()
st.session_state["log"] = []
set_default_state()
st.session_state.keycloak_session = keycloak_session
st.session_state["is_admin"] = "admin" in alerts_backend_proxy_singleton.get_user_roles()
st.session_state["trading_edit"] = {}
st.session_state["trading_edit"]["id"] = trading_id
st.session_state["trading_edit"]["created"] = trading["created"]
restore_indicators(trading)
st.session_state["trading_rule_title"] = trading["title"]
st.session_state["actual_currency"] = trading["account_currency"]
st.session_state["bet_size"] = int(float(trading["bet_size"]))
st.session_state["total_gross_limit"] = int(float(trading["total_gross_limit"]))
st.session_state["per_instrument_gross_limit"] = int(float(trading["per_instrument_gross_limit"]))
st.session_state["nop_limit"] = int(float(trading["nop_limit"]))
st.session_state["use_dividends_trading"] = (
trading.get("account_for_dividends", False) if trading.get("account_for_dividends", False) is not None else False
)
st.session_state["execution_cost_bps"] = float(
trading.get("execution_cost_bps", None) if trading.get("execution_cost_bps", None) is not None else 0.0
)
st.session_state["fill_trade_price"] = trading.get("trade_fill_price", None)
if st.session_state["is_admin"]:
st.session_state["public_rule"] = trading["public"]
st.session_state["model_descr"] = trading.get("description", "") if trading.get("description", "") is not None else ""
st.session_state["app_mode"] = "Trading"
st.session_state["mode_index"] = 1
# Don't know why, but this thing switches to the first tab, which we exactly need
st.empty()