upload dialog is uploading a file
This commit is contained in:
59
backend/app/routers/spreadsheet.py
Normal file
59
backend/app/routers/spreadsheet.py
Normal file
@ -0,0 +1,59 @@
|
||||
# app/routers/spreadsheet.py
|
||||
|
||||
from fastapi import APIRouter, UploadFile, File, HTTPException
|
||||
from app.services.spreadsheet_service import SampleSpreadsheetImporter, SpreadsheetImportError
|
||||
import logging
|
||||
|
||||
router = APIRouter()
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@router.post("/upload")
|
||||
async def upload_file(file: UploadFile = File(...)):
|
||||
importer = SampleSpreadsheetImporter()
|
||||
try:
|
||||
result = importer.import_spreadsheet(file)
|
||||
|
||||
if not result:
|
||||
logger.warning("No data extracted from spreadsheet.")
|
||||
return {
|
||||
"dewars_count": 0,
|
||||
"dewars": [],
|
||||
"pucks_count": 0,
|
||||
"pucks": [],
|
||||
"samples_count": 0,
|
||||
"samples": []
|
||||
}
|
||||
|
||||
# Logging the raw results for debugging.
|
||||
logger.info(f"Extracted Result: {result}")
|
||||
|
||||
# Extract and respond with detailed information.
|
||||
dewars = list(set(sample['dewarname'] for sample in result))
|
||||
pucks = list(set(sample['puckname'] for sample in result))
|
||||
samples = list(set(sample['crystalname'] for sample in result))
|
||||
|
||||
# Log the extracted names.
|
||||
logger.info(f"Dewars: {dewars}")
|
||||
logger.info(f"Pucks: {pucks}")
|
||||
logger.info(f"Samples: {samples}")
|
||||
|
||||
response_data = {
|
||||
"dewars_count": len(dewars),
|
||||
"dewars": dewars,
|
||||
"pucks_count": len(pucks),
|
||||
"pucks": pucks,
|
||||
"samples_count": len(samples),
|
||||
"samples": samples, # Ensure lists include detailed names
|
||||
"dewar_names": dewars, # Redundant but for clarity in the frontend
|
||||
"puck_names": pucks, # Redundant but for clarity in the frontend
|
||||
"crystal_names": samples # Redundant but for clarity in the frontend
|
||||
}
|
||||
|
||||
# Log the final response for debugging.
|
||||
logger.info(f"Final response: {response_data}")
|
||||
|
||||
return response_data
|
||||
except SpreadsheetImportError as e:
|
||||
logger.error(f"Failed to process file: {str(e)}")
|
||||
raise HTTPException(status_code=400, detail="Failed to upload file. Please try again.")
|
Reference in New Issue
Block a user