diff --git a/backend/app/routers/data.py b/backend/app/routers/data.py
index c4463ef..699e478 100644
--- a/backend/app/routers/data.py
+++ b/backend/app/routers/data.py
@@ -35,7 +35,6 @@
BOOK_IMPORT_FIELDS,
PREDEFINED_MAPPINGS,
compute_schema_fingerprint,
- delete_parsed_upload,
execute_import,
get_predefined_mapping,
load_parsed_upload,
@@ -323,8 +322,7 @@ async def event_generator():
final_error = 'error.importExecutionFailed'
yield f"data: {json.dumps({'event': 'error', 'message': 'error.importExecutionFailed'})}\n\n"
finally:
- if completed and import_failed_rows == 0 and final_error is None:
- delete_parsed_upload(body.file_id, current_user.id)
+ pass # import file is cleaned up by the periodic temp file job
return StreamingResponse(
event_generator(),
diff --git a/backend/app/services/data_import.py b/backend/app/services/data_import.py
index 9aef8eb..2516669 100644
--- a/backend/app/services/data_import.py
+++ b/backend/app/services/data_import.py
@@ -838,7 +838,7 @@ async def execute_import(
"tags": {"source": "Bookshelves", "transform": None},
"notes": {
"source": "My Review",
- "transform": "value.replace('
', '\n') if value else None",
+ "transform": "re.sub(r'
', '\\n', value, flags=re.IGNORECASE) if value else None",
},
"blurb": {"source": "", "transform": None},
"rating": {
@@ -885,7 +885,7 @@ def get_predefined_mapping(mapping_id: int) -> dict[str, object] | None:
return None
-def cleanup_temp_files(max_age_hours: int = 24) -> None:
+def cleanup_temp_files(max_age_hours: int = 48) -> None:
"""Delete temporary import files older than *max_age_hours*.
Args: