Explorar el Código

Fix args format in dynamic route (#502)

Thomas Brandého hace 2 años
padre
commit
1479411c4f
Se han modificado 2 ficheros con 16 adiciones y 0 borrados
  1. 3 0
      pynecone/app.py
  2. 13 0
      pynecone/utils.py

+ 3 - 0
pynecone/app.py

@@ -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

+ 13 - 0
pynecone/utils.py

@@ -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()