Fix args format in dynamic route (#502)

This commit is contained in:
Thomas Brandého 2023-02-12 02:06:40 +01:00 committed by GitHub
parent 104130df6b
commit 1479411c4f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 0 deletions

View File

@ -357,11 +357,14 @@ async def process(
# Get the state for the session.
state = app.state_manager.get_state(event.token)
formatted_params = utils.format_query_params(event.router_data)
# Pass router_data to the state of the App.
state.router_data = event.router_data
# also pass router_data to all substates
for _, substate in state.substates.items():
substate.router_data = event.router_data
state.router_data[constants.RouteVar.QUERY] = formatted_params
state.router_data[constants.RouteVar.CLIENT_TOKEN] = event.token
state.router_data[constants.RouteVar.SESSION_ID] = sid
state.router_data[constants.RouteVar.HEADERS] = headers

View File

@ -1101,6 +1101,19 @@ def format_event(event_spec: EventSpec) -> str:
return f"E(\"{format_event_handler(event_spec.handler)}\", {wrap(args, '{')})"
def format_query_params(router_data: Dict[str, Any]) -> Dict[str, str]:
"""Convert back query params name to python-friendly case.
Args:
router_data: the router_data dict containing the query params
Returns:
The reformatted query params
"""
params = router_data[constants.RouteVar.QUERY]
return {k.replace("-", "_"): v for k, v in params.items()}
USED_VARIABLES = set()