Merge branch 'master' into 4-mongodb_api

This commit is contained in:
Tobias Eidelpes
2021-01-19 12:10:59 +01:00
15 changed files with 330 additions and 74 deletions
+28 -3
View File
@@ -48,6 +48,31 @@ class ImageEndpoint:
logger.debug('Image GET single call: {}'.format(request))
return ImageEndpoint.get_image(identifier)
@staticmethod
@api_view(['GET'])
def image_api_get_status(request, identifier):
# get metadata from MongoDB
metadata = MongoDBService.getSingle(identifier)
if not metadata:
return JsonResponse({'valid': False, 'available': False})
# get stored SHA512 hash
stored_hash = metadata.get('sha512', '')
no_image = True
for service in ImageEndpoint.storageServiceList:
service_image_bytes = service.read_file(metadata['filename'])
if service_image_bytes is not None:
no_image = False
actual_service_hash = create_sha512(service_image_bytes)
if stored_hash != actual_service_hash:
return JsonResponse({'valid': False, 'available': True})
if no_image:
JsonResponse({'valid': False, 'available': False})
return JsonResponse({'valid': True, 'available': True})
@staticmethod
def get_image(identifier):
@@ -210,7 +235,6 @@ class ImageEndpoint:
def image_api_update(request, identifier):
logger.debug('Image UPDATE single call: {}'.format(request))
try:
payload = json.loads(request.body)
except json.decoder.JSONDecodeError:
@@ -222,7 +246,7 @@ class ImageEndpoint:
'Error': str(e)}, status=500, safe=False)
b64encoded_image = payload['image_data']
identifier = payload['id']
# identifier = identifier
metadata = payload['metadata']
filename = payload['metadata']['filename']
@@ -233,6 +257,7 @@ class ImageEndpoint:
'id': identifier}, status=404, safe=False)
metadata['version'] = mongodb_metadata['version']
filename = mongodb_metadata['filename']
decoded_image = WrapperService.unwrap_file(b64encoded_image)
@@ -240,7 +265,7 @@ class ImageEndpoint:
for service in ImageEndpoint.storageServiceList:
orig_new_name = identifier + '_' + str(metadata['version']) + '.jpg'
if not service.move_file(identifier, orig_new_name, decoded_image):
if not service.move_file(identifier, orig_new_name):
print("Could not move file from {} to {}".format(identifier, orig_new_name))
if not service.create_file(filename, decoded_image):
print("Could not save updated image to " + service.name)