From 82f781c4bf856fddae0953c3e9f2a015379f0f79 Mon Sep 17 00:00:00 2001
From: herman dyrkorn <herman.dyrkorn@gmail.com>
Date: Thu, 10 Jun 2021 10:51:26 +0200
Subject: [PATCH] renamed file to edit salamander, combined editsalamander and
 image endpoint

---
 api/__init__.py                               | 16 ++--
 .../{salamanderclass.py => editsalamander.py} | 57 +++++++++++++-
 api/endpoints/salamanderimageid.py            | 75 -------------------
 3 files changed, 63 insertions(+), 85 deletions(-)
 rename api/endpoints/{salamanderclass.py => editsalamander.py} (79%)
 delete mode 100644 api/endpoints/salamanderimageid.py

diff --git a/api/__init__.py b/api/__init__.py
index 45fce3b..8ad5447 100644
--- a/api/__init__.py
+++ b/api/__init__.py
@@ -11,7 +11,7 @@ app = Flask(__name__)
 app.config['SECRET_KEY'] = 'randomchangethisshit'
 app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database/database.db'
 app.config['JWT_AUTH_USERNAME_KEY'] = 'email'
-app.config['JWT_ACCESS_TOKEN_EXPIRES'] = 5 * 3600
+app.config['JWT_ACCESS_TOKEN_EXPIRES'] = 12 * 3600
 db = SQLAlchemy(app)
 jwt = JWTManager(app)
 bcrypt = Bcrypt(app)
@@ -24,13 +24,12 @@ from api.endpoints.user import UserEndpoint
 from api.endpoints.location import LocationEndpoint
 from api.endpoints.manageuser import AdminManageUser
 from api.endpoints.verifypassword import VerifyPassword
-from api.endpoints.pendingusers import AdminPendingUsers
 from api.endpoints.salamander import SalamanderEndpoint
-from api.endpoints.salamanders import SalamandersEndpoint
-from api.endpoints.salamanderimageid import SalamanderImageEndpoint
+from api.endpoints.editsalamander import EditSalamander
+from api.endpoints.pendingusers import AdminPendingUsers
 from api.endpoints.matchsalamander import MatchSalamander
+from api.endpoints.salamanders import SalamandersEndpoint
 from api.endpoints.findsalamanderinfo import FindSalamanderInfo
-from api.endpoints.salamanderclass import SalamanderClass
 
 
 api.add_resource(Login, "/login")
@@ -39,9 +38,8 @@ api.add_resource(LocationEndpoint, "/location")
 api.add_resource(AdminManageUser, "/manageUsers")
 api.add_resource(VerifyPassword, "/verifyPassword")
 api.add_resource(AdminPendingUsers, "/pendingUsers")
-api.add_resource(SalamandersEndpoint, "/salamanders/<location_name>")
-api.add_resource(SalamanderEndpoint, "/salamander/<salamander_id>")
-api.add_resource(SalamanderImageEndpoint, "/salamanderImage/<salamander_id>/<image_id>")
 api.add_resource(MatchSalamander, "/matchSalamander")
 api.add_resource(FindSalamanderInfo, "/findSalamanderInfo")
-api.add_resource(SalamanderClass, "/editSalamander")
+api.add_resource(SalamanderEndpoint, "/salamander/<salamander_id>")
+api.add_resource(SalamandersEndpoint, "/salamanders/<location_name>")
+api.add_resource(EditSalamander, "/editSalamander", "/editSalamander/<salamander_id>/<image_id>")
diff --git a/api/endpoints/salamanderclass.py b/api/endpoints/editsalamander.py
similarity index 79%
rename from api/endpoints/salamanderclass.py
rename to api/endpoints/editsalamander.py
index 15893b7..157754d 100644
--- a/api/endpoints/salamanderclass.py
+++ b/api/endpoints/editsalamander.py
@@ -9,11 +9,66 @@ from api.endpoints.matchsalamander import sanitize_number_str
 import glob
 from shutil import move
 from path_constants import _ACCESS_DATABASE
+from image_encoder.image_encoder import *
+import cv2
 
 
-class SalamanderClass(Resource):
+class EditSalamander(Resource):
     decorators = [limiter.limit("60/minute")]
 
+    @staticmethod
+    @jwt_required
+    def get(salamander_id, image_id):
+        user_id = get_jwt_identity()
+        user = db.session.query(User).filter_by(id=user_id).first()
+        if user.admin:
+            with _ACCESS_DATABASE:
+                salamander = db.session.query(Salamander).filter_by(id=salamander_id).first()
+                salamander_growth = db.session.query(SalamanderGrowth).filter_by(salamander_id=salamander.id,
+                                                                                 image_id=image_id).first()
+                if salamander and salamander_growth:
+                    location = db.session.query(Location).filter_by(id=salamander.location_id).first()
+                    salamander_images = []
+                    path_to_salamander_images = os.path.join("./images", location.name, salamander.species,
+                                                             salamander.sex, str(salamander.id))
+                    list_of_paths = glob.glob(os.path.join(path_to_salamander_images, '*.*'))
+                    for path in list_of_paths:
+                        basename = os.path.basename(path)
+                        if basename.__contains__(str(image_id)):
+
+                            image = cv2.imread(path)
+                            if not basename.__contains__("str"):  # Scale only original to set size
+
+                                height, width, _ = image.shape
+                                desired_long_side = 320
+                                scaling_factor = 1
+
+                                if width > height:
+                                    scaling_factor = desired_long_side / width
+                                else:
+                                    scaling_factor = desired_long_side / height
+
+                                new_dim = (int(width * scaling_factor), int(height * scaling_factor))
+
+                                # resize image
+                                image = cv2.resize(image, new_dim, interpolation=cv2.INTER_AREA)
+
+                            _, buffer = cv2.imencode('.jpg', image)
+                            encoded = base64.b64encode(buffer)
+
+                            image_data = {"url": "data:image/png;base64," + encoded.decode()}
+
+                            salamander_images.append(image_data)
+
+                    return jsonify({"images": salamander_images, "length": salamander_growth.length,
+                                    "weight": salamander_growth.weight, "imageId": image_id, "location": location.name,
+                                    "salamanderId": salamander.id, "sex": salamander.sex, "species": salamander.species,
+                                    'status': 200})
+                else:
+                    return jsonify({"message": "no salamander with this id or no growth data", 'status': 400})
+        else:
+            return jsonify({"message": "no access to this endpoint", 'status': 400})
+
     @staticmethod
     @jwt_required
     def delete():
diff --git a/api/endpoints/salamanderimageid.py b/api/endpoints/salamanderimageid.py
deleted file mode 100644
index 6898d53..0000000
--- a/api/endpoints/salamanderimageid.py
+++ /dev/null
@@ -1,75 +0,0 @@
-import sys
-
-from flask import jsonify
-from flask_jwt_extended import jwt_required, get_jwt_identity
-from flask_restful import Resource
-from api import db, limiter
-from api.models.dbmodels import Location, User, Salamander, SalamanderGrowth
-import os
-import glob
-import cv2
-import sys
-from image_encoder.image_encoder import *
-from path_constants import _ACCESS_DATABASE
-import cv2
-
-
-# get one specific image on a specific salamander based on s_id and i_id
-class SalamanderImageEndpoint(Resource):
-    decorators = [limiter.limit("60/minute")]
-
-    @staticmethod
-    @jwt_required
-    def get(salamander_id, image_id):
-        user_id = get_jwt_identity()
-        user = db.session.query(User).filter_by(id=user_id).first()
-        if user.admin:
-            with _ACCESS_DATABASE:
-                salamander = db.session.query(Salamander).filter_by(id=salamander_id).first()
-                salamander_growth = db.session.query(SalamanderGrowth).filter_by(salamander_id=salamander.id,
-                                                                                 image_id=image_id).first()
-                if salamander and salamander_growth:
-                    location = db.session.query(Location).filter_by(id=salamander.location_id).first()
-                    salamander_images = []
-                    path_to_salamander_images = os.path.join("./images", location.name, salamander.species,
-                                                             salamander.sex, str(salamander.id))
-                    list_of_paths = glob.glob(os.path.join(path_to_salamander_images, '*.*'))
-                    for path in list_of_paths:
-                        basename = os.path.basename(path)
-                        if basename.__contains__(str(image_id)):
-
-                            image = cv2.imread(path)
-                            if not basename.__contains__("str"): #Scale only original to set size
-
-                                height, width, _ = image.shape
-                                print(sys.getsizeof(image))
-
-                                desired_long_side = 320
-                                scaling_factor = 1
-
-                                if width > height:
-                                    scaling_factor = desired_long_side/width
-                                else:
-                                    scaling_factor = desired_long_side/height
-
-                                new_dim = (int(width*scaling_factor), int(height*scaling_factor))
-
-                                # resize image
-                                image = cv2.resize(image, new_dim, interpolation=cv2.INTER_AREA)
-                                print(sys.getsizeof(image))
-
-                            _, buffer = cv2.imencode('.jpg', image)
-                            encoded = base64.b64encode(buffer)
-
-                            image_data = {"url": "data:image/png;base64," + encoded.decode()}
-
-                            salamander_images.append(image_data)
-
-                    return jsonify({"images": salamander_images, "length": salamander_growth.length,
-                                    "weight": salamander_growth.weight, "imageId": image_id, "location": location.name,
-                                    "salamanderId": salamander.id, "sex": salamander.sex, "species": salamander.species,
-                                    'status': 200})
-                else:
-                    return jsonify({"message": "no salamander with this id or no growth data", 'status': 400})
-        else:
-            return jsonify({"message": "no access to this endpoint", 'status': 400})
-- 
GitLab