From 1ef74b51ba271bb18a0cc5adfc7ffeca4dc15435 Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Wed, 27 Dec 2023 08:10:26 +0100 Subject: [PATCH] added ship delete and fixed schema loading error for shipclass --- src/server/BreCal/api/ships.py | 15 +++++++++++++++ src/server/BreCal/impl/ships.py | 29 +++++++++++++++++++++++++++++ src/server/BreCal/schemas/model.py | 6 +++++- 3 files changed, 49 insertions(+), 1 deletion(-) diff --git a/src/server/BreCal/api/ships.py b/src/server/BreCal/api/ships.py index 284387d..fcbbc7b 100644 --- a/src/server/BreCal/api/ships.py +++ b/src/server/BreCal/api/ships.py @@ -47,3 +47,18 @@ def PutShip(): return json.dumps("bad format"), 400 return impl.ships.PutShip(loadedModel) + + +@bp.route('/ships', methods=['delete']) +@auth_guard() # no restriction by role +def DeleteShip(): + + try: + content = request.get_json(force=True) + loadedModel = model.ShipSchema().load(data=content, many=False, partial=True, unknown=EXCLUDE) + except Exception as ex: + logging.error(ex) + print(ex) + return json.dumps("bad format"), 400 + + return impl.ships.DeleteShip(loadedModel) diff --git a/src/server/BreCal/impl/ships.py b/src/server/BreCal/impl/ships.py index 66c46ec..485a8e1 100644 --- a/src/server/BreCal/impl/ships.py +++ b/src/server/BreCal/impl/ships.py @@ -124,3 +124,32 @@ def PutShip(schemaModel): result = {} result["message"] = "call failed" return json.dumps(result), 500, {'Content-Type': 'application/json; charset=utf-8'} + + +def DeleteShip(options): + """ + :param options: A dictionary containing all the paramters for the Operations + options["id"] + + """ + try: + + pooledConnection = local_db.getPoolConnection() + commands = pydapper.using(pooledConnection) + affected_rows = commands.execute("UPDATE ship SET deleted = 1 WHERE id = ?id?", param={"id" : options["id"]}) + + pooledConnection.close() + + if affected_rows == 1: + return json.dumps({"id" : options["id"]}), 200, {'Content-Type': 'application/json; charset=utf-8'} + + result = {} + result["message"] = "no such record" + return json.dumps(result), 404, {'Content-Type': 'application/json; charset=utf-8'} + + except Exception as ex: + logging.error(ex) + print(ex) + result = {} + result["message"] = "call failed" + return json.dumps(result), 500, {'Content-Type': 'application/json; charset=utf-8'} \ No newline at end of file diff --git a/src/server/BreCal/schemas/model.py b/src/server/BreCal/schemas/model.py index 786b00f..beaca79 100644 --- a/src/server/BreCal/schemas/model.py +++ b/src/server/BreCal/schemas/model.py @@ -128,6 +128,8 @@ class ShipcallSchema(Schema): canceled = fields.Bool(Required = False, allow_none=True) evaluation = fields.Int(Required = False, allow_none=True) evaluation_message = fields.Str(allow_none=True, metadata={'Required':False}) # Solving: RemovedInMarshmallow4Warning: Passing field metadata as keyword arguments is deprecated. Use the explicit `metadata=...` argument instead. Additional metadata: {'Required': False} + evaluation_time = fields.DateTime(Required = False, allow_none=True) + evaluation_message_sent = fields.Bool(Required = False, allow_none=True) participants = fields.List(fields.Nested(ParticipantAssignmentSchema)) created = fields.DateTime(Required = False, allow_none=True) modified = fields.DateTime(Required = False, allow_none=True) @@ -140,7 +142,7 @@ class Participant_Assignment: pass participant_id: int - type: int + type: int # a variant would be to use the IntFlag type (with appropriate serialization) @dataclass class Shipcall: @@ -170,6 +172,8 @@ class Shipcall: canceled: bool evaluation: int evaluation_message: str + evaluation_time: datetime + evaluation_message_sent: bool created: datetime modified: datetime participants: List[Participant_Assignment] = field(default_factory=list)