Exemplo n.º 1
0
def create_report() -> JSONResponse:
    request_data = request.get_json()

    metric_id = request_data.get("metric_id", None)

    if "metric_name" in request_data:
        metric = current_app.metric_store.get_metric_by_name(
            name=request_data["metric_name"])
        metric_id = metric.metric_id if metric is not None else None
    if "metric_abbreviation" in request_data:
        metric = current_app.metric_store.get_metric_by_abbreviation(
            abbreviation=request_data["metric_abbreviation"])
        metric_id = metric.metric_id if metric is not None else None

    if metric_id is None:
        raise APIError(400, "BAD_METRIC_ID")

    return JSONResponse({
        "report":
        current_app.report_store.create_report(
            reported_at=request_data["reported_at"],
            device_id=request_data["device_id"],
            metric_id=metric_id,
            value=request_data["value"],
        )
    })
Exemplo n.º 2
0
def authorise_user() -> JSONResponse:
    request_data = request.get_json()

    user = current_app.user_store.get_user_by_username(
        username=request_data["username"])
    mac_address = request_data["clientid"].lower() if request_data.get(
        "clientid", None) is not None else None

    error = None

    if not user:
        error = f"User not found: {request_data['username']}"
    if error is None and mac_address != user.mac_address:
        error = "Invalid mac address for user"

    if error is None and not current_app.user_store.verify_user(
            user_id=user.user_id,
            username=user.username,
            password=request_data["password"],
            mac_address=user.mac_address,
    ):
        error = "User verification failed"

    return JSONResponse({
        "Ok": error is None,
        "Error": error,
    })
Exemplo n.º 3
0
def create_superuser() -> JSONResponse:
    request_data = request.get_json()
    return JSONResponse({
        "superuser":
        current_app.superuser_store.create_superuser(
            user_id=request_data["user_id"], )
    })
Exemplo n.º 4
0
def get_device(device_id: str) -> JSONResponse:
    return JSONResponse({
        "device":
        current_app.device_store.get_device(
            device_id=device_id,
            fields=set(request.args.getlist("fields")),
        )
    })
Exemplo n.º 5
0
def get_user_by_mac_address(mac_address: str) -> JSONResponse:
    return JSONResponse({
        "user":
        current_app.user_store.get_user_by_mac_address(
            username=mac_address,
            fields=set(request.args.getlist("fields")),
        )
    })
Exemplo n.º 6
0
def get_user_by_username(username: str) -> JSONResponse:
    return JSONResponse({
        "user":
        current_app.user_store.get_user_by_username(
            username=username,
            fields=set(request.args.getlist("fields")),
        )
    })
Exemplo n.º 7
0
def get_device_location_tag(device_location_tag_id: int) -> JSONResponse:
    return JSONResponse({
        "device_location_tag":
        current_app.device_location_tag_store.get_device_location_tag(
            device_location_tag_id=device_location_tag_id,
            fields=set(request.args.getlist("fields")),
        )
    })
Exemplo n.º 8
0
def get_metric_by_abbreviation(abbreviation: str) -> JSONResponse:
    return JSONResponse({
        "metric":
        current_app.metric_store.get_metric_by_abbreviation(
            abbreviation=abbreviation,
            fields=set(request.args.getlist("fields")),
        )
    })
Exemplo n.º 9
0
def get_location_tag_by_name(name: str) -> JSONResponse:
    return JSONResponse({
        "location_tag":
        current_app.location_tag_store.get_location_tag_by_name(
            name=name,
            fields=set(request.args.getlist("fields")),
        )
    })
Exemplo n.º 10
0
def get_metric_by_name(name: str) -> JSONResponse:
    return JSONResponse({
        "metric":
        current_app.metric_store.get_metric_by_name(
            name=name,
            fields=set(request.args.getlist("fields")),
        )
    })
Exemplo n.º 11
0
def get_access_control(access_control_id: int) -> JSONResponse:
    return JSONResponse({
        "access_control":
        current_app.access_control_store.get_access_control(
            access_control_id=access_control_id,
            fields=set(request.args.getlist("fields")),
        )
    })
Exemplo n.º 12
0
def get_metric(metric_id: int) -> JSONResponse:
    return JSONResponse({
        "metric":
        current_app.metric_store.get_metric(
            metric_id=metric_id,
            fields=set(request.args.getlist("fields")),
        )
    })
Exemplo n.º 13
0
def get_device_type_metric(device_type_metric_id: int) -> JSONResponse:
    return JSONResponse({
        "device_type_metric":
        current_app.device_type_metric_store.get_device_type_metric(
            device_type_metric_id=device_type_metric_id,
            fields=set(request.args.getlist("fields")),
        )
    })
Exemplo n.º 14
0
def get_superuser_by_user_id(user_id: int) -> JSONResponse:
    return JSONResponse({
        "superuser":
        current_app.superuser_store.get_superuser_by_user_id(
            user_id=user_id,
            fields=set(request.args.getlist("fields")),
        )
    })
Exemplo n.º 15
0
def get_device_type_by_name(name: str) -> JSONResponse:
    return JSONResponse({
        "device_type":
        current_app.device_type_store.get_device_type_by_name(
            name=name,
            fields=set(request.args.getlist("fields")),
        )
    })
Exemplo n.º 16
0
def update_device_type(device_type_id: int) -> JSONResponse:
    request_data = request.get_json()
    return JSONResponse({
        "device_type":
        current_app.device_type_store.update_device_type(
            device_type_id=device_type_id,
            name=request_data.get("name", None),
        )
    })
Exemplo n.º 17
0
def update_superuser(superuser_id: int) -> JSONResponse:
    request_data = request.get_json()
    return JSONResponse({
        "superuser":
        current_app.superuser_store.update_superuser(
            superuser_id=superuser_id,
            user_id=request_data.get("user_id", None),
        )
    })
Exemplo n.º 18
0
def create_location_tag() -> JSONResponse:
    request_data = request.get_json()
    return JSONResponse({
        "location_tag":
        current_app.location_tag_store.create_location_tag(
            name=request_data["name"],
            level=request_data["level"],
        )
    })
Exemplo n.º 19
0
def create_device_type() -> JSONResponse:
    request_data = request.get_json()
    return JSONResponse({
        "device_type":
        current_app.device_type_store.create_device_type(
            name=request_data["name"],
            report_period=request_data["report_period"],
        )
    })
Exemplo n.º 20
0
def create_device_location_tag() -> JSONResponse:
    request_data = request.get_json()
    return JSONResponse({
        "device_location_tag":
        current_app.device_location_tag_store.create_device_location_tag(
            device_id=request_data["device_id"],
            location_tag_id=request_data["location_tag_id"],
        )
    })
Exemplo n.º 21
0
def update_device_location_tag(device_location_tag_id: int) -> JSONResponse:
    request_data = request.get_json()
    return JSONResponse({
        "device_location_tag":
        current_app.device_location_tag_store.update_device_location_tag(
            device_location_tag_id=device_location_tag_id,
            device_id=request_data.get("device_id", None),
            location_tag_id=request_data.get("location_tag_id", None),
        )
    })
Exemplo n.º 22
0
def get_report(report_id: int) -> JSONResponse:
    return JSONResponse({
        "report":
        current_app.report_store.get_report(
            report_id=report_id,
            fields=set(request.args.getlist("fields")),
            convert_metric=arg_to_bool(
                request.args.get("convert_metric", None), True),
        )
    })
Exemplo n.º 23
0
def update_device(device_id: str) -> JSONResponse:
    request_data = request.get_json()
    return JSONResponse({
        "device":
        current_app.device_store.update_device(
            device_id=device_id,
            device_type_id=request_data.get("device_type_id", None),
            latest_ping=request_data.get("latest_ping", None),
        )
    })
Exemplo n.º 24
0
def update_location_tag(location_tag_id: int) -> JSONResponse:
    request_data = request.get_json()
    return JSONResponse({
        "location_tag":
        current_app.location_tag_store.update_location_tag(
            location_tag_id=location_tag_id,
            name=request_data.get("name", None),
            level=request_data.get("level", None),
        )
    })
Exemplo n.º 25
0
def create_access_control() -> JSONResponse:
    request_data = request.get_json()
    return JSONResponse({
        "access_control":
        current_app.access_control_store.create_access_control(
            user_id=request_data["user_id"],
            topic=request_data["topic"],
            action=request_data["action"],
        )
    })
Exemplo n.º 26
0
def get_superusers() -> JSONResponse:
    return JSONResponse({
        "superusers":
        current_app.superuser_store.get_superusers(
            fields=set(request.args.getlist("fields")),
            superuser_id=set(request.args.getlist("superuser_id")),
            user_id=set(request.args.getlist("user_id")),
            order_by=request.args.get("order_by", None),
            order_by_direction=request.args.get("order_by_direction", None),
        )
    })
Exemplo n.º 27
0
def create_device_type_metric() -> JSONResponse:
    request_data = request.get_json()
    return JSONResponse({
        "device_type_metric":
        current_app.device_type_metric_store.create_device_type_metric(
            device_type_id=request_data["device_type_id"],
            metric_id=request_data["metric_id"],
            reportable=request_data["reportable"],
            commandable=request_data["commandable"],
        )
    })
Exemplo n.º 28
0
def update_access_control(access_control_id: int) -> JSONResponse:
    request_data = request.get_json()
    return JSONResponse({
        "access_control":
        current_app.access_control_store.update_access_control(
            access_control_id=access_control_id,
            user_id=request_data.get("user_id", None),
            topic=request_data.get("topic", None),
            action=request_data.get("action", None),
        )
    })
Exemplo n.º 29
0
def get_device_types() -> JSONResponse:
    return JSONResponse({
        "device_types":
        current_app.device_type_store.get_device_types(
            fields=set(request.args.getlist("fields")),
            device_type_id=set(request.args.getlist("device_type_id")),
            name=set(request.args.getlist("name")),
            order_by=request.args.get("order_by", None),
            order_by_direction=request.args.get("order_by_direction", None),
        )
    })
Exemplo n.º 30
0
def create_metric() -> JSONResponse:
    request_data = request.get_json()
    return JSONResponse({
        "metric":
        current_app.metric_store.create_metric(
            name=request_data["name"],
            abbreviation=request_data["abbreviation"],
            value_type=request_data["value_type"],
            unit=request_data.get("unit", None),
        )
    })