Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
Commit
Β·
d5e88af
1
Parent(s):
59ab3d7
lfg
Browse files
src/managers/session_manager.py
CHANGED
|
@@ -399,16 +399,24 @@ async def get_session_id(request, session_manager):
|
|
| 399 |
Returns:
|
| 400 |
Session ID string
|
| 401 |
"""
|
|
|
|
|
|
|
|
|
|
| 402 |
# First try to get from query params
|
| 403 |
session_id = request.query_params.get("session_id")
|
|
|
|
| 404 |
|
| 405 |
# If not in query params, try to get from headers
|
| 406 |
if not session_id:
|
| 407 |
session_id = request.headers.get("X-Session-ID")
|
|
|
|
| 408 |
|
| 409 |
# If still not found, generate a new one
|
| 410 |
if not session_id:
|
| 411 |
session_id = str(uuid.uuid4())
|
|
|
|
|
|
|
|
|
|
| 412 |
|
| 413 |
# Get or create the session state
|
| 414 |
session_state = session_manager.get_session_state(session_id)
|
|
|
|
| 399 |
Returns:
|
| 400 |
Session ID string
|
| 401 |
"""
|
| 402 |
+
# Debug: Log all headers
|
| 403 |
+
logger.log_message(f"π Request headers: {dict(request.headers)}", level=logging.DEBUG)
|
| 404 |
+
|
| 405 |
# First try to get from query params
|
| 406 |
session_id = request.query_params.get("session_id")
|
| 407 |
+
logger.log_message(f"π Session ID from query params: {session_id}", level=logging.DEBUG)
|
| 408 |
|
| 409 |
# If not in query params, try to get from headers
|
| 410 |
if not session_id:
|
| 411 |
session_id = request.headers.get("X-Session-ID")
|
| 412 |
+
logger.log_message(f"π Session ID from headers: {session_id}", level=logging.DEBUG)
|
| 413 |
|
| 414 |
# If still not found, generate a new one
|
| 415 |
if not session_id:
|
| 416 |
session_id = str(uuid.uuid4())
|
| 417 |
+
logger.log_message(f"β οΈ Generated NEW session ID: {session_id}", level=logging.WARNING)
|
| 418 |
+
else:
|
| 419 |
+
logger.log_message(f"β
Using existing session ID: {session_id}", level=logging.INFO)
|
| 420 |
|
| 421 |
# Get or create the session state
|
| 422 |
session_state = session_manager.get_session_state(session_id)
|
src/routes/session_routes.py
CHANGED
|
@@ -526,10 +526,17 @@ async def preview_csv(app_state = Depends(get_app_state), session_id: str = Depe
|
|
| 526 |
else:
|
| 527 |
description = session_desc
|
| 528 |
|
| 529 |
-
# Get rows and convert to dict
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 530 |
preview_data = {
|
| 531 |
"headers": df.columns.tolist(),
|
| 532 |
-
"rows": json.loads(
|
| 533 |
"name": name,
|
| 534 |
"description": description
|
| 535 |
}
|
|
|
|
| 526 |
else:
|
| 527 |
description = session_desc
|
| 528 |
|
| 529 |
+
# Get rows and convert to dict - FIXED: Handle NaN values during JSON serialization
|
| 530 |
+
# Create a copy of the dataframe for JSON conversion
|
| 531 |
+
df_for_json = df.head(5).copy()
|
| 532 |
+
|
| 533 |
+
# Replace any remaining NaN/None values with "NaN" string for JSON compatibility
|
| 534 |
+
df_for_json = df_for_json.fillna("NaN")
|
| 535 |
+
|
| 536 |
+
# Convert to JSON with proper NaN handling
|
| 537 |
preview_data = {
|
| 538 |
"headers": df.columns.tolist(),
|
| 539 |
+
"rows": json.loads(df_for_json.to_json(orient="values")),
|
| 540 |
"name": name,
|
| 541 |
"description": description
|
| 542 |
}
|