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"], ) })
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, })
def create_superuser() -> JSONResponse: request_data = request.get_json() return JSONResponse({ "superuser": current_app.superuser_store.create_superuser( user_id=request_data["user_id"], ) })
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")), ) })
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")), ) })
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")), ) })
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")), ) })
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")), ) })
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")), ) })
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")), ) })
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")), ) })
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")), ) })
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")), ) })
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")), ) })
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")), ) })
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), ) })
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), ) })
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"], ) })
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"], ) })
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"], ) })
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), ) })
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), ) })
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), ) })
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), ) })
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"], ) })
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), ) })
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"], ) })
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), ) })
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), ) })
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), ) })