diff --git a/iotclient/iot_client.py b/iotclient/iot_client.py index 29aa747..31d7f95 100644 --- a/iotclient/iot_client.py +++ b/iotclient/iot_client.py @@ -5,12 +5,15 @@ import json import time from datetime import datetime + def print_response(response): print("Code: " + str(response.status_code) + "; Body: " + str(response.json())) + def unwrap_file(file_str: str) -> bytes: return base64.b64decode(file_str) + def send_image(identifier, image_path, metadata_payload): print("Sending image with identifier " + identifier) if not os.path.isfile(image_path): @@ -41,10 +44,10 @@ def send_image(identifier, image_path, metadata_payload): def get_image(identifier): - print("Getting image with identifier "+identifier) + print("Getting image with identifier " + identifier) baseurl = "http://127.0.0.1:8000" - get_url = "/image/get/"+identifier + get_url = "/image/get/" + identifier try: response = requests.get(baseurl + get_url) @@ -53,17 +56,39 @@ def get_image(identifier): print(payload['metadata']) b64encoded_image = unwrap_file(payload['image_data']) goal_folder_name = "images_fetch" - path = "../../"+goal_folder_name+"/"+payload['metadata']['filename'] - goal_folder_path = os.path.sep.join(os.path.abspath(__file__).split(os.path.sep)[:-3]) + os.path.sep + goal_folder_name + path = "../../" + goal_folder_name + "/" + payload['metadata']['filename'] + + goal_folder_path = os.path.sep.join( + os.path.abspath(__file__).split(os.path.sep)[:-3]) + os.path.sep + goal_folder_name + + if not os.path.isdir(goal_folder_path): + os.mkdir(goal_folder_path) + out = open(path, 'wb') out.write(b64encoded_image) out.close() os.system(goal_folder_path + os.path.sep + payload['metadata']['filename']) - except os.error: - print("Error sending request") + except os.error as e: + print("Error sending request {}".format(e)) + except KeyError as e: + print("Key error {}".format(e)) return True +def delete_image(identifier): + print("Deleting image with identifier " + identifier) + + baseurl = "http://127.0.0.1:8000" + get_url = "/image/delete/" + identifier + + try: + response = requests.delete(baseurl + get_url) + payload = response.json() + print(payload) + except os.error: + print("Error deleting request") + return True + def get_all(): print("Getting all images") @@ -78,6 +103,7 @@ def get_all(): print("Error sending request") return True + metadata = None index = 0 metadata_folder = "." + os.path.sep @@ -86,22 +112,22 @@ metadata_path = metadata_folder + os.path.sep + metadata_file image_folder = "." + os.path.sep + "images" - if (os.path.isfile(metadata_path)): print("Loading metadata to memory from " + metadata_path) - metadata = sorted(json.load(open(metadata_file, "r")), key=lambda k: datetime.strptime(k['datetime'], '%d-%b-%Y (%H:%M:%S.%f)')) + metadata = sorted(json.load(open(metadata_file, "r")), + key=lambda k: datetime.strptime(k['datetime'], '%d-%b-%Y (%H:%M:%S.%f)')) else: print("Default metadata_file not found.") if (os.path.isdir(image_folder)): - print("Image folder set to " + image_folder) + print("Image folder set to " + image_folder) else: print("Default image folder not found.") -#main input loop +# main input loop command = "dummy" while (command.lower() not in ["exit", "quit", "end"]): - + try: command = input("Please enter command: ") except: @@ -127,25 +153,26 @@ while (command.lower() not in ["exit", "quit", "end"]): print("trigger - next image in line is sent to backend") 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("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") print("select | - select image with given as next in line") print() print() - - if command.lower() == "dir": + + if command.lower() == "dir": print("Current image folder is " + image_folder) - + if command.lower() == "len": if metadata is None: print("No metadata selected") else: print("Length of metadata list " + str(len(metadata))) - - if command.lower() == "index": + + if command.lower() == "index": print("Current lineup index is " + str(index)) - + if command.lower() == "info": if metadata is None: print("No metadata selected") @@ -163,7 +190,8 @@ while (command.lower() not in ["exit", "quit", "end"]): print("Error: No file on path " + path) continue print("Loading metadata to memory from " + path) - metadata = sorted(json.load(open(metadata_file, "r")), key=lambda k: datetime.strptime(k['datetime'], '%d-%b-%Y (%H:%M:%S.%f)')) + metadata = sorted(json.load(open(metadata_file, "r")), + key=lambda k: datetime.strptime(k['datetime'], '%d-%b-%Y (%H:%M:%S.%f)')) index = 0 if command.lower() == "imagefolder": @@ -173,13 +201,13 @@ while (command.lower() not in ["exit", "quit", "end"]): path = attributes[0] if not os.path.isdir(path): print("Error: Path is no valid directory " + path) - continue + continue print("New image folder selected " + path) if command.lower() == "show": if metadata is None: print("No metadata loaded") - continue + continue if image_folder is None: print("No image folder selected") continue @@ -190,7 +218,7 @@ while (command.lower() not in ["exit", "quit", "end"]): if command.lower() == "trigger": if metadata is None: print("No metadata loaded") - continue + continue if image_folder is None: print("No image folder selected") continue @@ -211,7 +239,6 @@ while (command.lower() not in ["exit", "quit", "end"]): get_image(filename[:-4]) index = index + 1 - if command.lower() == "fetchall": if metadata is None: print("No metadata loaded") @@ -222,6 +249,18 @@ while (command.lower() not in ["exit", "quit", "end"]): get_all() index = index + 1 + if command.lower() == "delete": + if metadata is None: + print("No metadata loaded") + continue + if image_folder is None: + print("No image folder selected") + continue + meta_payload = metadata[index] + filename = meta_payload['filename'] + delete_image(filename[:-4]) + index = index + 1 + if command.lower() == "rapid": if metadata is None: print("No metadata loaded") @@ -236,7 +275,7 @@ while (command.lower() not in ["exit", "quit", "end"]): print("Error: amount is no number") continue amount = int(attributes[0]) - for i in range(0,amount): + for i in range(0, amount): meta_payload = metadata[index] filename = meta_payload['filename'] send_image(filename[:-4], image_folder + os.path.sep + filename, meta_payload) @@ -277,7 +316,6 @@ while (command.lower() not in ["exit", "quit", "end"]): continue index = ind - if command.lower() == "select": if metadata is None: print("Please first select metadata") @@ -296,4 +334,4 @@ while (command.lower() not in ["exit", "quit", "end"]): if not found: print("Could not find image by identifier " + identifier) -quit("Bye") \ No newline at end of file +quit("Bye") diff --git a/middleware/.run/createsuperuser.run.xml b/middleware/.run/createsuperuser.run.xml index 5fc8ae4..b5b43dd 100644 --- a/middleware/.run/createsuperuser.run.xml +++ b/middleware/.run/createsuperuser.run.xml @@ -1,6 +1,6 @@ - +