diff --git a/app/api/main.py b/app/api/main.py index 51a5289bd2e39cf372cf8e5ffd26534c465c3bff..b9c519733d7ec531a274c89efe38669083122540 100644 --- a/app/api/main.py +++ b/app/api/main.py @@ -86,6 +86,24 @@ def create_item(): return create_generic_model(Item, mandatory_field='serial_number') +@bp.route('/items/<item_id>', methods=['PATCH']) +@jwt_required +def patch_item(item_id): + data = request.get_json() + if data is None: + raise utils.InventoryError('Body should be a JSON object') + item = Item.query.get(item_id) + if item is None: + raise utils.InventoryError(f'Unknown item id: {item_id}', status_code=422) + item.name = data.get('name', item.name) + item.manufacturer = utils.convert_to_model(data.get('manufacturer', item.manufacturer), Manufacturer) + item.model = utils.convert_to_model(data.get('model', item.model), Model) + item.location = utils.convert_to_model(data.get('location', item.location), Location) + item.status = utils.convert_to_model(data.get('status', item.status), Status) + db.session.commit() + return jsonify(item.to_dict()) + + @bp.route('/manufacturers') @jwt_required def get_manufacturers():