コード例 #1
0
def create_reading(sensor_id):
    data = request.get_json() or {}
    if "data" not in data:
        return bad_request("must include data field")
    if "category" not in data:
        return bad_request("must include category field")
    # Check if the category is a valid category, if not return a bad request
    if not Category.are_valid_categories([data["category"]]):
        return bad_request("invalid category")
    # Add a timestamp to the data if one was provided
    if "timestamp" not in data:
        data["timestamp"] = datetime.utcnow()
    # Check if a sensor for the given sensor_id exists and add it to the data if it does
    sensor = Sensor.query.get_or_404(sensor_id)
    data["sensor"] = sensor.name

    reading = Reading()
    reading.from_dict(data)
    db.session.add(reading)
    sensor.last_updated = data["timestamp"]
    db.session.add(sensor)
    db.session.commit()
    response = jsonify(reading.to_dict())
    response.status_code = 201
    response.headers["Location"] = url_for("api.get_reading",
                                           reading_id=reading.id,
                                           sensor_id=sensor.id)
    return response
コード例 #2
0
def remove_sensor_categories(sensor_id):
    data = request.get_json() or {}
    if "categories" not in data:
        return bad_request("must include categories field")
    if not Category.are_valid_categories(data["categories"]):
        return bad_request("invalid categor(y)/(ies) in included categories")
    sensor = Sensor.query.get_or_404(sensor_id)
    sensor.remove_categories(data["categories"])
    db.session.add(sensor)
    db.session.commit()
    response = jsonify()
    response.status_code = 204
    response.headers["Location"] = url_for("api.get_sensor_categories",
                                           sensor_id=sensor.id)
    return response
コード例 #3
0
def create_sensor():
    data = request.get_json() or {}
    if "name" not in data:
        return bad_request("must include name field")
    if "categories" not in data:
        return bad_request("must include categories field")
    if not Category.are_valid_categories(data["categories"]):
        return bad_request("invalid categor(y)/(ies) in included categories")
    if Sensor.query.filter_by(name=data["name"]).first():
        return bad_request("please use a different name")
    sensor = Sensor()
    sensor.from_dict(data)
    db.session.add(sensor)
    db.session.commit()
    response = jsonify(sensor.to_dict())
    response.status_code = 201
    response.headers["Location"] = url_for("api.get_sensor",
                                           sensor_id=sensor.id)
    return response