Admin basket: update/fix file import, download, delete
remove useless AdminBasketFile model definition cleanups, typings
This commit is contained in:
parent
6139f49aae
commit
c613fd35d9
5 changed files with 123 additions and 136 deletions
|
@ -47,13 +47,23 @@ async def get_basket(
|
|||
async def upload_basket_file(
|
||||
name: str,
|
||||
file: UploadFile,
|
||||
project_id: int | None = None,
|
||||
surveyor_id: int | None = None,
|
||||
equipment_id: int | None = None,
|
||||
auto_import: bool = False,
|
||||
user: UserRead = Depends(get_current_active_user),
|
||||
):
|
||||
) -> BasketImportResult:
|
||||
try:
|
||||
basket = manager.baskets[name]
|
||||
except KeyError:
|
||||
raise HTTPException(status.HTTP_404_NOT_FOUND, f'No basket named {name}')
|
||||
fileItem = await basket.add_files(file, user)
|
||||
raise HTTPException(status.HTTP_404_NOT_FOUND, f"No basket named {name}")
|
||||
fileItem = await basket.add_file(
|
||||
file,
|
||||
user,
|
||||
project_id=project_id,
|
||||
surveyor_id=surveyor_id,
|
||||
equipment_id=equipment_id,
|
||||
)
|
||||
return fileItem
|
||||
|
||||
@api.get('/basket/download/{name}/{file_id}/{file_name}')
|
||||
|
@ -73,7 +83,10 @@ async def download_basket_file(
|
|||
file_record = await basket.get_file(file_id)
|
||||
if file_record is None:
|
||||
raise HTTPException(status.HTTP_404_NOT_FOUND, f'No import file id {file_id}')
|
||||
return FileResponse(file_record.path)
|
||||
abs_path = basket.base_dir / file_record.path
|
||||
if not abs_path.exists():
|
||||
raise HTTPException(status.HTTP_404_NOT_FOUND, f'File {file_record.name} not found')
|
||||
return FileResponse(abs_path)
|
||||
|
||||
@api.get('/basket/import/{basket}/{file_id}')
|
||||
async def import_basket_file(
|
||||
|
@ -93,4 +106,19 @@ async def import_basket_file(
|
|||
## FIXME: shouldn't it be AdminImportError?
|
||||
except ImportError as err:
|
||||
raise HTTPException(status.HTTP_500_INTERNAL_SERVER_ERROR, err)
|
||||
return result
|
||||
return result
|
||||
|
||||
|
||||
@api.get('/basket/delete/{basket}/{file_id}')
|
||||
async def delete_basket_file(
|
||||
basket: str,
|
||||
file_id: int,
|
||||
user: User = Depends(get_current_active_user),
|
||||
) -> None:
|
||||
if not (user and user.has_role('reviewer')):
|
||||
raise HTTPException(status.HTTP_401_UNAUTHORIZED)
|
||||
basket_ = manager.baskets[basket]
|
||||
file_import = await basket_.get_file(file_id)
|
||||
if file_import is None:
|
||||
raise HTTPException(status.HTTP_404_NOT_FOUND, f'No import file id {file_id}')
|
||||
await basket_.delete_file(file_import)
|
Loading…
Add table
Add a link
Reference in a new issue