From a092d0887504b34257ab2f634bbe25b4cb4b50bc Mon Sep 17 00:00:00 2001
From: Benjamin Bertrand <benjamin.bertrand@esss.se>
Date: Thu, 20 Jul 2017 12:57:50 +0200
Subject: [PATCH] Add API endpoing to update an item

---
 app/api/main.py | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/app/api/main.py b/app/api/main.py
index 51a5289..b9c5197 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():
-- 
GitLab