diff --git a/server/Camera/controllers.py b/server/Camera/controllers.py new file mode 100644 index 0000000..03da19c --- /dev/null +++ b/server/Camera/controllers.py @@ -0,0 +1,50 @@ +from flask import request, jsonify +import uuid +from ..app import db +from .models import Camera + +def list_all_camera_controller(): + cameras = Camera.query.all() + response = [] + for camera in cameras: response.append(camera.toDict()) + return jsonify(response) + +def create_camera_controller(): + request_form = request.form.to_dict() + print(request_form) + new_camera = Camera( + name = request_form['name'], + shutterspeedstops = request_form['shutterspeedstops'], + shutterspeedmax = request_form['shutterspeedmax'], + fk_FilmFormat_id = request_form['filmformat'], + fk_CameraFormat_id = request_form['cameraformat'], + fk_CameraManufacturer_id = request_form['cameramanufacturer'], + ) + db.session.add(new_camera) + db.session.commit() + response = Camera.query.all() + return(jsonify(request_form)) + +def retrieve_camera_controller(camera_id): + response = Camera.query.get(camera_id).toDict() + print(response) + return jsonify(response) + +def update_camera_controller(camera_id): + request_form = request.form.to_dict() + camera = Camera.query.get(camera_id) + camera.name = request_form['name'] + camera.shutterspeedstops = request_form['shutterspeedstops'] + camera.shutterspeedmax = request_form['shutterspeedmax'] + camera.fk_FilmFormat_id = request_form['filmformat'] + camera.fk_CameraFormat_id = request_form['cameraformat'] + camera.fk_CameraManufacturer_id = request_form['cameramanufacturer'] + + db.session.commit() + response = Camera.query.get(camera_id).toDict() + return jsonify(response) + +def delete_camera_controller(camera_id): + Camera.query.filter_by(id=camera_id).delete() + db.session.commit() + return f"Camera with ID= {camera_id} was removed successfully" \ No newline at end of file diff --git a/server/Camera/models.py b/server/Camera/models.py new file mode 100644 index 0000000..ad26624 --- /dev/null +++ b/server/Camera/models.py @@ -0,0 +1,20 @@ +from sqlalchemy import inspect + +from ..app import db + +class Camera(db.Model): + id = db.Column(db.Integer(),primary_key=True,nullable=False,unique=True, autoincrement=True) + name = db.Column(db.String(255)) + shutterspeedstops = db.Column(db.String(15)) + shutterspeedmax = db.Column(db.String(15)) + fk_FilmFormat_id = db.Column(db.Integer(),db.ForeignKey("film_format.id")) + filmformat = db.relationship("FilmFormat", back_populates='cameras') + fk_CameraFormat_id = db.Column(db.Integer(),db.ForeignKey("camera_format.id")) + cameraformat = db.relationship("CameraFormat", back_populates='cameras') + fk_CameraManufacturer_id = db.Column(db.Integer(),db.ForeignKey("camera_manufacturer.id")) + cameramanufacturer = db.relationship("CameraManufacturer", back_populates='cameras') + def toDict(self): + return { + c.key: getattr(self,c.key) for c in inspect(self).mapper.column_attrs + } + \ No newline at end of file diff --git a/server/Camera/urls.py b/server/Camera/urls.py new file mode 100644 index 0000000..59c781a --- /dev/null +++ b/server/Camera/urls.py @@ -0,0 +1,15 @@ +from flask import request + +from ..app import app +from .controllers import list_all_camera_controller,create_camera_controller,retrieve_camera_controller,update_camera_controller,delete_camera_controller + +@app.route("/Cameras",methods=["GET","POST"]) +def list_all_create_cameras(): + if request.method == 'GET' : return list_all_camera_controller() + if request.method == 'POST' : return create_camera_controller() + +@app.route("/Cameras/",methods=["GET","PUT","DELETE"]) +def retrieve_update_delete_cameras(camera_id): + if request.method == 'GET' : return retrieve_camera_controller(camera_id) + if request.method == 'PUT' : return update_camera_controller(camera_id) + if request.method == "DELETE": return delete_camera_controller(camera_id) \ No newline at end of file diff --git a/server/CameraFormat/controllers.py b/server/CameraFormat/controllers.py new file mode 100644 index 0000000..c514b11 --- /dev/null +++ b/server/CameraFormat/controllers.py @@ -0,0 +1,40 @@ +from flask import request, jsonify +import uuid +from ..app import db +from .models import CameraFormat + +def list_all_cameraformat_controller(): + cameraformats = CameraFormat.query.all() + response = [] + for cameraformat in cameraformats: response.append(cameraformat.toDict()) + return jsonify(response) + +def create_cameraformat_controller(): + request_form = request.form.to_dict() + print(request_form) + new_cameraformat = CameraFormat( + name = request_form['name'], + ) + db.session.add(new_cameraformat) + db.session.commit() + response = CameraFormat.query.all() + return(jsonify(request_form)) + +def retrieve_cameraformat_controller(cameraformat_id): + response = CameraFormat.query.get(cameraformat_id).toDict() + print(response) + return jsonify(response) + +def update_cameraformat_controller(cameraformat_id): + request_form = request.form.to_dict() + cameraformat = CameraFormat.query.get(cameraformat_id) + cameraformat.name = request_form['name'] + + db.session.commit() + response = CameraFormat.query.get(cameraformat_id).toDict() + return jsonify(response) + +def delete_cameraformat_controller(cameraformat_id): + CameraFormat.query.filter_by(id=cameraformat_id).delete() + db.session.commit() + return f"Cameraformat with ID= {cameraformat_id} was removed successfully" \ No newline at end of file diff --git a/server/CameraFormat/models.py b/server/CameraFormat/models.py new file mode 100644 index 0000000..4aa24ce --- /dev/null +++ b/server/CameraFormat/models.py @@ -0,0 +1,13 @@ +from sqlalchemy import inspect + +from ..app import db + +class CameraFormat(db.Model): + id = db.Column(db.Integer(),primary_key=True,nullable=False,unique=True, autoincrement=True) + name = db.Column(db.String(255)) + cameras = db.relationship("Camera",back_populates='cameraformat') + def toDict(self): + return { + c.key: getattr(self,c.key) for c in inspect(self).mapper.column_attrs + } + \ No newline at end of file diff --git a/server/CameraFormat/urls.py b/server/CameraFormat/urls.py new file mode 100644 index 0000000..a7511fa --- /dev/null +++ b/server/CameraFormat/urls.py @@ -0,0 +1,15 @@ +from flask import request + +from ..app import app +from .controllers import list_all_cameraformat_controller,create_cameraformat_controller,retrieve_cameraformat_controller,update_cameraformat_controller,delete_cameraformat_controller + +@app.route("/CameraFormat",methods=["GET","POST"]) +def list_all_create_cameraformats(): + if request.method == 'GET' : return list_all_cameraformat_controller() + if request.method == 'POST' : return create_cameraformat_controller() + +@app.route("/CameraFormat/",methods=["GET","PUT","DELETE"]) +def retrieve_update_delete_cameraformats(cameraformat_id): + if request.method == 'GET' : return retrieve_cameraformat_controller(cameraformat_id) + if request.method == 'PUT' : return update_cameraformat_controller(cameraformat_id) + if request.method == "DELETE": return delete_cameraformat_controller(cameraformat_id) \ No newline at end of file diff --git a/server/CameraManufacturer/controllers.py b/server/CameraManufacturer/controllers.py new file mode 100644 index 0000000..ea4bfe9 --- /dev/null +++ b/server/CameraManufacturer/controllers.py @@ -0,0 +1,40 @@ +from flask import request, jsonify +import uuid +from ..app import db +from .models import CameraManufacturer + +def list_all_cameramanufacturers_controller(): + filmmanufacturers = CameraManufacturer.query.all() + response = [] + for filmmanufacturer in filmmanufacturers: response.append(filmmanufacturer.toDict()) + return jsonify(response) + +def create_cameramanufacturer_controller(): + request_form = request.form.to_dict() + print(request_form) + new_cameramanufacturer = CameraManufacturer( + name = request_form['name'], + ) + db.session.add(new_cameramanufacturer) + db.session.commit() + response = CameraManufacturer.query.all() + return(jsonify(request_form)) + +def retrieve_cameramanufacturer_controller(cameramanufacturer_id): + response = CameraManufacturer.query.get(cameramanufacturer_id).toDict() + print(response) + return jsonify(response) + +def update_cameramanufacturer_controller(cameramanufacturer_id): + request_form = request.form.to_dict() + cameramanufacturer = CameraManufacturer.query.get(cameramanufacturer_id) + cameramanufacturer.name = request_form['name'] + + db.session.commit() + response = CameraManufacturer.query.get(cameramanufacturer_id).toDict() + return jsonify(response) + +def delete_cameramanufacturer_controller(cameramanufacturer_id): + CameraManufacturer.query.filter_by(id=cameramanufacturer_id).delete() + db.session.commit() + return f"CameraManufacturer with ID={cameramanufacturer_id} was removed successfully" \ No newline at end of file diff --git a/server/CameraManufacturer/models.py b/server/CameraManufacturer/models.py new file mode 100644 index 0000000..89c5d3f --- /dev/null +++ b/server/CameraManufacturer/models.py @@ -0,0 +1,14 @@ +from sqlalchemy import inspect + +from ..app import db + +class CameraManufacturer(db.Model): + id = db.Column(db.Integer(),primary_key=True,nullable=False,unique=True, autoincrement=True) + name = db.Column(db.String(255)) + films = db.relationship("Camera",back_populates='cameramanufacturer') + + def toDict(self): + return { + c.key: getattr(self,c.key) for c in inspect(self).mapper.column_attrs + } + \ No newline at end of file diff --git a/server/CameraManufacturer/urls.py b/server/CameraManufacturer/urls.py new file mode 100644 index 0000000..9954192 --- /dev/null +++ b/server/CameraManufacturer/urls.py @@ -0,0 +1,15 @@ +from flask import request + +from ..app import app +from .controllers import list_all_cameramanufacturers_controller,create_cameramanufacturer_controller,retrieve_cameramanufacturer_controller,update_cameramanufacturer_controller,delete_cameramanufacturer_controller + +@app.route("/CameraManufacturer",methods=["GET","POST"]) +def list_all_create_filmmanufacturers(): + if request.method == 'GET' : return list_all_cameramanufacturers_controller() + if request.method == 'POST' : return create_cameramanufacturer_controller() + +@app.route("/CameraManufacturer/",methods=["GET","PUT","DELETE"]) +def retrieve_update_delete_FilmManufacturers(cameramanufacturer_id): + if request.method == 'GET' : return retrieve_cameramanufacturer_controller(cameramanufacturer_id) + if request.method == 'PUT' : return update_cameramanufacturer_controller(cameramanufacturer_id) + if request.method == "DELETE": return delete_cameramanufacturer_controller(cameramanufacturer_id) \ No newline at end of file diff --git a/server/FilmFormat/models.py b/server/FilmFormat/models.py index 8e2457b..4a5a43b 100644 --- a/server/FilmFormat/models.py +++ b/server/FilmFormat/models.py @@ -6,6 +6,7 @@ class FilmFormat(db.Model): id = db.Column(db.Integer(),primary_key=True,nullable=False,unique=True, autoincrement=True) name = db.Column(db.String(255)) films = db.relationship("Film",back_populates='filmformat') + cameras = db.relationship("Camera",back_populates='filmformat') def toDict(self): return { c.key: getattr(self,c.key) for c in inspect(self).mapper.column_attrs diff --git a/server/app.py b/server/app.py index 977c546..64959c4 100644 --- a/server/app.py +++ b/server/app.py @@ -39,6 +39,8 @@ from .Film import urls from .FilmManufacturer import urls from .FilmFormat import urls from .Location import urls +from .Camera import urls +from .CameraFormat import urls if __name__ == "__main__":