コード例 #1
0
ファイル: report_routes.py プロジェクト: samakj/han
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"],
        )
    })
コード例 #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,
    })
コード例 #3
0
ファイル: superuser_routes.py プロジェクト: samakj/han
def create_superuser() -> JSONResponse:
    request_data = request.get_json()
    return JSONResponse({
        "superuser":
        current_app.superuser_store.create_superuser(
            user_id=request_data["user_id"], )
    })
コード例 #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")),
        )
    })
コード例 #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")),
        )
    })
コード例 #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")),
        )
    })
コード例 #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")),
        )
    })
コード例 #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")),
        )
    })
コード例 #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")),
        )
    })
コード例 #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")),
        )
    })
コード例 #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")),
        )
    })
コード例 #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")),
        )
    })
コード例 #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")),
        )
    })
コード例 #14
0
ファイル: superuser_routes.py プロジェクト: samakj/han
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")),
        )
    })
コード例 #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")),
        )
    })
コード例 #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),
        )
    })
コード例 #17
0
ファイル: superuser_routes.py プロジェクト: samakj/han
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),
        )
    })
コード例 #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"],
        )
    })
コード例 #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"],
        )
    })
コード例 #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"],
        )
    })
コード例 #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),
        )
    })
コード例 #22
0
ファイル: report_routes.py プロジェクト: samakj/han
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),
        )
    })
コード例 #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),
        )
    })
コード例 #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),
        )
    })
コード例 #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"],
        )
    })
コード例 #26
0
ファイル: superuser_routes.py プロジェクト: samakj/han
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),
        )
    })
コード例 #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"],
        )
    })
コード例 #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),
        )
    })
コード例 #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),
        )
    })
コード例 #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),
        )
    })