Skip to content

Commit 13bd5c1

Browse files
authored
IEBH-417: Restore file/folder API (#11)
1 parent 5dc91c8 commit 13bd5c1

File tree

3 files changed

+1504
-1169
lines changed

3 files changed

+1504
-1169
lines changed

api/api_files/meta.py

Lines changed: 44 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,19 +69,58 @@ async def delete(self, request: Request):
6969
"""Proxy for entity info file DELETE API, handles permission checks."""
7070
logger.info('Call API for deleting files in bulk')
7171

72-
data = await request.json()
73-
payload = {'ids': data.get('ids', [])}
72+
params = request.query_params
7473
headers = {'Authorization': request.headers.get('Authorization')}
7574
async with AsyncClient(timeout=ConfigClass.SERVICE_CLIENT_TIMEOUT) as client:
76-
response = await client.delete(
77-
ConfigClass.METADATA_SERVICE + 'itembatch/mark', params=payload, headers=headers
78-
)
75+
response = await client.delete(ConfigClass.METADATA_SERVICE + 'items/mark/', params=params, headers=headers)
7976
if response.status_code != 200:
8077
error_msg = f'Error calling Meta service delete items: {response.json()}'
8178
raise APIException(error_msg=error_msg, status_code=EAPIResponseCode.internal_error.value)
8279
result = response.json()
8380
return JSONResponse(content=result, status_code=response.status_code)
8481

82+
@router.get(
83+
'/files/delete',
84+
summary='Get files marked for deletion in bulk',
85+
dependencies=[Depends(PermissionsCheck('project', '*', 'view'))],
86+
)
87+
async def get(self, request: Request):
88+
"""Proxy for entity info file DELETE API, handles permission checks."""
89+
logger.info('Call API for getting files marked for deletion in bulk')
90+
91+
headers = {'Authorization': request.headers.get('Authorization')}
92+
async with AsyncClient(timeout=ConfigClass.SERVICE_CLIENT_TIMEOUT) as client:
93+
response = await client.get(ConfigClass.METADATA_SERVICE + 'items/mark/', headers=headers)
94+
if response.status_code != 200:
95+
error_msg = f'Error calling Meta service get marked items: {response.json()}'
96+
raise APIException(error_msg=error_msg, status_code=EAPIResponseCode.internal_error.value)
97+
result = response.json()
98+
return JSONResponse(content=result, status_code=response.status_code)
99+
100+
101+
@cbv.cbv(router)
102+
class FileRestore:
103+
current_identity: CurrentUser = Depends(jwt_required)
104+
105+
@router.put(
106+
'/files/restore',
107+
summary='Restore file',
108+
dependencies=[Depends(PermissionsCheck('project', '*', 'update'))],
109+
)
110+
async def put(self, request: Request):
111+
"""Proxy for entity info file RESTORE API, handles permission checks."""
112+
logger.info('Call API for restoring files in bulk')
113+
114+
params = request.query_params
115+
headers = {'Authorization': request.headers.get('Authorization')}
116+
async with AsyncClient(timeout=ConfigClass.SERVICE_CLIENT_TIMEOUT) as client:
117+
response = await client.put(ConfigClass.METADATA_SERVICE + 'item/mark/', params=params, headers=headers)
118+
if response.status_code != 200:
119+
error_msg = f'Error calling Meta service restore items: {response.json()}'
120+
raise APIException(error_msg=error_msg, status_code=EAPIResponseCode.internal_error.value)
121+
result = response.json()
122+
return JSONResponse(content=result, status_code=response.status_code)
123+
85124

86125
@cbv.cbv(router)
87126
class FileMeta:

0 commit comments

Comments
 (0)