Beispiel #1
0
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