From c738d482cd80ba17b4980f1ff5c3aef363e9d4f4 Mon Sep 17 00:00:00 2001 From: herman dyrkorn <herman.dyrkorn@gmail.com> Date: Thu, 10 Jun 2021 11:49:49 +0200 Subject: [PATCH] addning the rematch for mobile modal to show --- api/endpoints/editsalamander.py | 88 +++++++++++++++++++++++---------- 1 file changed, 61 insertions(+), 27 deletions(-) diff --git a/api/endpoints/editsalamander.py b/api/endpoints/editsalamander.py index 157754d..563b9d5 100644 --- a/api/endpoints/editsalamander.py +++ b/api/endpoints/editsalamander.py @@ -80,7 +80,8 @@ class EditSalamander(Resource): salamander = db.session.query(Salamander).filter_by(id=data['id']).first() location = db.session.query(Location).filter_by(name=data['location']).first() if user.admin and salamander and location: - salamander_path = os.path.join("./images", location.name, salamander.species, salamander.sex, str(salamander.id)) + salamander_path = os.path.join("./images", location.name, salamander.species, salamander.sex, + str(salamander.id)) img_id = int(data['image_id']) last_id = int(len(os.listdir(salamander_path)) / 2) - 1 @@ -100,7 +101,8 @@ class EditSalamander(Resource): os.rmdir(salamander_path) db.session.delete(salamander) db.session.commit() - return jsonify({"id": salamander.id, "imageId": img_id, "message": "salamander deleted", 'status': 200}) + return jsonify( + {"id": salamander.id, "imageId": img_id, "message": "salamander deleted", 'status': 200}) else: if img_id != last_id: original_path = glob.glob(os.path.join(salamander_path, str(last_id) + '.*'))[0] @@ -109,13 +111,16 @@ class EditSalamander(Resource): original_extension = os.path.splitext(original_path)[1] processed_extension = os.path.splitext(processed_path)[1] - salamander_growth_row = db.session.query(SalamanderGrowth).filter_by(salamander_id=salamander.id, image_id=last_id).first() + salamander_growth_row = db.session.query(SalamanderGrowth).filter_by( + salamander_id=salamander.id, image_id=last_id).first() salamander_growth_row.image_id = img_id db.session.commit() - os.rename(processed_path, os.path.join(salamander_path, str(img_id) + "_str" + processed_extension)) + os.rename(processed_path, + os.path.join(salamander_path, str(img_id) + "_str" + processed_extension)) os.rename(original_path, os.path.join(salamander_path, str(img_id) + original_extension)) - return jsonify({"id": salamander.id, "imageId": img_id, "message": "salamander deleted", 'status': 200}) + return jsonify( + {"id": salamander.id, "imageId": img_id, "message": "salamander deleted", 'status': 200}) else: return jsonify({"message": "this user cannot delete this salamander", 'status': 400}) else: @@ -131,7 +136,8 @@ class EditSalamander(Resource): with _ACCESS_DATABASE: salamander = db.session.query(Salamander).filter_by(id=data['id']).first() if salamander: - growth_row = db.session.query(SalamanderGrowth).filter_by(salamander_id=salamander.id, image_id=int(data['image_id'])).first() + growth_row = db.session.query(SalamanderGrowth).filter_by(salamander_id=salamander.id, + image_id=int(data['image_id'])).first() if "weight" in data: growth_row.weight = sanitize_number_str(str(data['weight'])) db.session.commit() @@ -139,9 +145,12 @@ class EditSalamander(Resource): growth_row.length = sanitize_number_str(str(data['length'])) db.session.commit() if "location" in data and "new_location" in data and "new_sex" in data and "new_species" in data: - if data['location'] != data['new_location'] or salamander.sex != data['new_sex'] or salamander.species != data['new_species']: - salamander_path = os.path.join("images", data['location'], salamander.species, salamander.sex, str(salamander.id)) - new_path_to_images = os.path.join("images", data['new_location'], data['new_species'], data['new_sex']) + if data['location'] != data['new_location'] or salamander.sex != data['new_sex'] or \ + salamander.species != data['new_species']: + salamander_path = os.path.join("images", data['location'], salamander.species, + salamander.sex, str(salamander.id)) + new_path_to_images = os.path.join("images", data['new_location'], data['new_species'], + data['new_sex']) original_path = glob.glob(os.path.join(salamander_path, data['image_id'] + '.*')) processed_path = glob.glob(os.path.join(salamander_path, data['image_id'] + '_str.*')) if len(original_path) > 0 and len(processed_path) > 0: @@ -151,32 +160,42 @@ class EditSalamander(Resource): last_id = int(len(os.listdir(salamander_path)) / 2) - 1 if data['new_sex'] != "juvenile": - result = match_file_structure(input_image=processed_path, match_directory=new_path_to_images) + result = match_file_structure(input_image=processed_path, + match_directory=new_path_to_images) if result: # if salamander already exist: if result > -1: # move all images and delete previous ID.: move_images(salamander.id, result, image_id, - path_to_salamander=os.path.join(new_path_to_images, str(result)), + path_to_salamander=os.path.join(new_path_to_images, + str(result)), path_to_original_image=original_path, path_to_processed_image=processed_path) else: - add_salamander(salamander.id, image_id, data['new_location'], data['new_species'], - data['new_sex'], new_path_to_images, user_id, original_path, processed_path) - return handle_remaining_images(salamander, salamander_path, image_id, last_id) + add_salamander(salamander.id, image_id, data['new_location'], + data['new_species'], + data['new_sex'], new_path_to_images, user_id, original_path, + processed_path) + return handle_remaining_images(salamander, salamander_path, image_id, last_id, + True, result) else: - return jsonify({"message": "Salamander image, " + data['image_id'] + " does not exist", 'status': 400}) + return jsonify( + {"message": "Salamander image, " + data['image_id'] + " does not exist", + 'status': 400}) # if last image was moved: else: add_salamander(salamander.id, image_id, data['new_location'], data['new_species'], data['new_sex'], new_path_to_images, user_id, original_path, processed_path) - return handle_remaining_images(salamander, salamander_path, image_id, last_id) + return handle_remaining_images(salamander, salamander_path, image_id, last_id, + False, 0) else: - return jsonify({"message": "Image id, " + data['image_id'] + " does not exist in salamander_id, " + data['id'], 'status': 400}) + return jsonify({"message": "Image id, " + data[ + 'image_id'] + " does not exist in salamander_id, " + data['id'], 'status': 400}) else: - return jsonify({"message": "salamander cannot be moved to the same location", 'status': 400}) + return jsonify( + {"message": "salamander cannot be moved to the same location", 'status': 400}) else: return jsonify({"message": "salamander updated", 'status': 200}) else: @@ -186,19 +205,25 @@ class EditSalamander(Resource): def delete_growth_row(salamander_id, image_id): - salamander_growth_row = db.session.query(SalamanderGrowth).filter_by(salamander_id=salamander_id, image_id=image_id).first() + salamander_growth_row = db.session.query(SalamanderGrowth).filter_by(salamander_id=salamander_id, + image_id=image_id).first() if salamander_growth_row: db.session.delete(salamander_growth_row) db.session.commit() -def handle_remaining_images(salamander, salamander_path: str, image_id: int, last_id: int, ): +def handle_remaining_images(salamander, salamander_path: str, image_id: int, last_id: int, match_bool, result): # if last image was moved: if len(os.listdir(salamander_path)) == 0: os.rmdir(salamander_path) db.session.delete(salamander) db.session.commit() - return jsonify({"id": salamander.id, "imageId": image_id, "message": "salamander moved", 'status': 200}) + if match_bool: + return jsonify({"id": result, "matching": "Match!", "message": "Matched with salamander", 'status': 200}) + else: + return jsonify( + {"id": salamander.id, "matching": "No match.", "message": "New salamander in database", 'status': 200}) + else: if image_id != last_id: original_path = glob.glob(os.path.join(salamander_path, str(last_id) + '.*'))[0] @@ -211,17 +236,23 @@ def handle_remaining_images(salamander, salamander_path: str, image_id: int, las db.session.commit() os.rename(processed_path, os.path.join(salamander_path, str(image_id) + "_str" + processed_extension)) os.rename(original_path, os.path.join(salamander_path, str(image_id) + original_extension)) - return jsonify({"id": salamander.id, "message": "salamander moved", 'status': 200}) + if match_bool: + return jsonify({"id": result, "matching": "Match!", "message": "Matched with salamander", 'status': 200}) + else: + return jsonify( + {"id": salamander.id, "matching": "No match.", "message": "New salamander in database", 'status': 200}) def lower_image_id_growth_row(salamander_id, old_id, new_id): - salamander_growth_row = db.session.query(SalamanderGrowth).filter_by(salamander_id=salamander_id, image_id=old_id).first() + salamander_growth_row = db.session.query(SalamanderGrowth).filter_by(salamander_id=salamander_id, + image_id=old_id).first() if salamander_growth_row: salamander_growth_row.image_id = new_id db.session.commit() -def move_images(salamander_id, new_salamander_id, image_id, path_to_salamander, path_to_original_image, path_to_processed_image): +def move_images(salamander_id, new_salamander_id, image_id, path_to_salamander, path_to_original_image, + path_to_processed_image): path_to_salamander = os.path.abspath(path_to_salamander) split_name_org = str(path_to_original_image).split('.') split_name_proc = str(path_to_processed_image).split('.') @@ -230,14 +261,16 @@ def move_images(salamander_id, new_salamander_id, image_id, path_to_salamander, b = os.path.join(path_to_salamander, str(number_of_files)) + "_str." + split_name_proc[len(split_name_org) - 1] move(path_to_original_image, a) move(path_to_processed_image, b) - salamander_growth_row = db.session.query(SalamanderGrowth).filter_by(salamander_id=salamander_id, image_id=image_id).first() + salamander_growth_row = db.session.query(SalamanderGrowth).filter_by(salamander_id=salamander_id, + image_id=image_id).first() if salamander_growth_row: salamander_growth_row.image_id = number_of_files salamander_growth_row.salamander_id = new_salamander_id db.session.commit() -def add_salamander(old_salamander_id, image_id, location, species, sex, path_to_images, user_id, path_to_original_image, path_to_processed_image): +def add_salamander(old_salamander_id, image_id, location, species, sex, path_to_images, user_id, path_to_original_image, + path_to_processed_image): location_id = db.session.query(Location.id).filter_by(name=location.lower()).first() new_salamander = Salamander(sex=sex, species=species, location_id=location_id[0], uid=user_id) db.session.add(new_salamander) @@ -245,5 +278,6 @@ def add_salamander(old_salamander_id, image_id, location, species, sex, path_to_ salamander_id = db.session.query(Salamander.id).filter_by(uid=user_id).order_by(Salamander.id.desc()).first() path_for_new_salamander = os.path.join(path_to_images, str(salamander_id[0])) os.makedirs(path_for_new_salamander) - move_images(old_salamander_id, salamander_id[0], image_id, path_for_new_salamander, path_to_original_image, path_to_processed_image) + move_images(old_salamander_id, salamander_id[0], image_id, path_for_new_salamander, path_to_original_image, + path_to_processed_image) return salamander_id[0] -- GitLab