Skip to content
Snippets Groups Projects
Commit c738d482 authored by Herman Andersen Dyrkorn's avatar Herman Andersen Dyrkorn
Browse files

addning the rematch for mobile modal to show

parent c821af96
Branches
No related tags found
1 merge request!49Resolve "re-match"
......@@ -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]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment