From ddf0cbf2d71db26d7f75dc0abd7d776603ec2b8a Mon Sep 17 00:00:00 2001 From: Martin Schett Date: Sun, 6 Dec 2020 18:24:07 +0100 Subject: [PATCH] Added delete all in dropbox service and iot client help command --- iotclient/iot_client.py | 1 + middleware/app_be/services/dropboxservice.py | 15 +++++++++++++++ middleware/app_be/views/rest_api.py | 20 ++++++++++++++++++-- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/iotclient/iot_client.py b/iotclient/iot_client.py index b986a13..322be3a 100644 --- a/iotclient/iot_client.py +++ b/iotclient/iot_client.py @@ -171,6 +171,7 @@ while (command.lower() not in ["exit", "quit", "end"]): print("fetch - gets the next image from database if exists") print("fetchall - get all images") print("delete - delets the next image from db if exists") + print("delete - delets all images from the service") print("rapid <#amount> - next images in line are sent to backend in 2 second intervals") print("skip [<#amount>] - skips the next number of images in line or 1 if no is given") print("set <#index> - sets image on given as next in line") diff --git a/middleware/app_be/services/dropboxservice.py b/middleware/app_be/services/dropboxservice.py index a34a707..8cfda10 100644 --- a/middleware/app_be/services/dropboxservice.py +++ b/middleware/app_be/services/dropboxservice.py @@ -61,4 +61,19 @@ class DropboxService: dbx.files_delete_v2(settings.DROPBOX_IMAGE_FOLDER + filename) except: return False + return True + + @staticmethod + def delete_all() -> bool: + """Delete every file from the dropbox storage. + + :return: Whether the storage was successfully emptied + """ + try: + dbx = dropbox.Dropbox(settings.DROPBOX_OAUTH2_ACCESS_TOKEN) + dbx.files_delete_v2(settings.DROPBOX_IMAGE_FOLDER[:-1]) + dbx.files_create_folder_v2(settings.DROPBOX_IMAGE_FOLDER[:-1]) + except dropbox.exceptions.ApiError as e: + print(e) + return False return True \ No newline at end of file diff --git a/middleware/app_be/views/rest_api.py b/middleware/app_be/views/rest_api.py index a02cf03..5e5d6b9 100644 --- a/middleware/app_be/views/rest_api.py +++ b/middleware/app_be/views/rest_api.py @@ -109,19 +109,35 @@ class ImageEndpoint: def image_api_delete(request: HttpRequest, identifier): logger.debug('Image DELETE single call: {}'.format(request)) + result_bool = True + + # get metadata from MongoDB + metadata = MongoDBService.getSingle(identifier) + if not metadata: + return JsonResponse({'Result': 'Error - could not find any metadata in mongoDB.', + 'id': identifier}, status=404, safe=False) resp = MongoDBService.deleteSingle(identifier) print(resp) - return JsonResponse({'Result': 'success1'}, safe=False) + if not DropboxService.delete_file(metadata['filename']): + print('Error deleting file in dropbox') + result_bool = False + + return JsonResponse({'Result': result_bool}, safe=False) @staticmethod @api_view(['DELETE']) def image_api_delete_all(request: HttpRequest): logger.debug('Image DELETE single call: {}'.format(request)) + result_bool = True resp = MongoDBService.deleteAll() print(resp) - return JsonResponse({'Result': 'success1'}, safe=False) + if not DropboxService.delete_all(): + print('Error deleting dropbox folder') + result_bool = False + + return JsonResponse({'Result': result_bool}, safe=False)