Spaces:
Runtime error
Runtime error
| import logging | |
| from fastapi import APIRouter, Response, UploadFile, Depends | |
| from fastapi.responses import FileResponse | |
| from schemas.document import Document | |
| from components.services.document import DocumentService | |
| import common.dependencies as DI | |
| router = APIRouter(prefix='/datasets/{dataset_id}/documents') | |
| logger = logging.getLogger(__name__) | |
| async def get_document(document_id: int, dataset_id: int | None = None, | |
| document_service: DocumentService = Depends(DI.get_document_service)) -> FileResponse: | |
| logger.info(f"Handling GET request to /documents/{document_id}") | |
| try: | |
| result = document_service.get_document(document_id, dataset_id) | |
| logger.info(f"Successfully retrieved document info for ID {document_id}") | |
| return FileResponse( | |
| path=result.filepath, | |
| filename=result.filename, | |
| media_type="application/xml", | |
| headers={"Content-Type": "application/xml; charset=cp866"}, #TODO: charset=cp866 выглядит как дичь | |
| ) | |
| except Exception as e: | |
| logger.error(f"Error retrieving document {document_id}: {str(e)}") | |
| raise | |
| async def delete_document(dataset_id: int, document_id: int, | |
| document_service: DocumentService = Depends(DI.get_document_service)) -> None: | |
| document_service.delete_document(dataset_id, document_id) | |
| return Response(status_code=200) | |
| async def add_document(dataset_id: int, file: UploadFile, | |
| document_service: DocumentService = Depends(DI.get_document_service)) -> Document: | |
| return document_service.add_document(dataset_id, file) | |