def rack(id=None): if request.method == "GET": if id: return jsonify(Rack.find(by_id=id)) return jsonify(Rack.free_find()) if request.method == "POST": if request.headers.get('Content-Type', '') == "application/json": received_data = request.json else: received_data = dict(request.form) for key in received_data: if type(received_data[key]) == list and len( received_data[key]) == 1: received_data[key] = received_data[key][0] else: return jsonify(error="Unable to parse json"), 400 mandatory_fields = ["name", "site", "building", "room"] if all(elem in received_data.keys() for elem in mandatory_fields): return jsonify(Rack.create(**received_data)), 201 else: return jsonify(error="Mandatory keys are missing", mandatory_fields=mandatory_fields), 400 if request.method == "PUT": if request.headers.get('Content-Type', '') == "application/json": received_data = request.json else: received_data = dict(request.form) for key in received_data: if type(received_data[key]) == list and len( received_data[key]) == 1: received_data[key] = received_data[key][0] else: return jsonify(error="Unable to parse json"), 400 return jsonify( Rack.update(rack_id=id, name=received_data.get("name", None), site=received_data.get("site", None), building=received_data.get("building", None), room=received_data.get("room", None))), 200 if request.method == "DELETE": if id: return jsonify(Rack.delete(by_id=id)) else: return jsonify(error="Must provide ID for DELETE method"), 400