From 2e19c7b28167cbdf5ce28538101aed360bcdf216 Mon Sep 17 00:00:00 2001 From: gsd Date: Fri, 13 Feb 2026 22:27:05 +0300 Subject: [PATCH] extra data --- webExtensions/extra/NodeDTO.py | 12 ++++++++++-- webExtensions/nodeList.py | 16 ++++++++-------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/webExtensions/extra/NodeDTO.py b/webExtensions/extra/NodeDTO.py index c3f3a6a..1b9123e 100644 --- a/webExtensions/extra/NodeDTO.py +++ b/webExtensions/extra/NodeDTO.py @@ -1,10 +1,18 @@ -__slots__ = ["num", "snr", "hops_away", "ts", "long_name", "short_name"] +__slots__ = ["num", "snr", "hops_away", "ts", "long_name", "short_name", "is_unmessagable"] class NodeDTO: - def __init__(self, data): + def __init__(self, data, grabPosition = False, grabMetrics = False): for slot in __slots__: setattr(self, slot, data.get(slot, None)) + self.havePosition = True if data.get("position", {}) else False + if grabPosition and data.get("position", {}): + setattr(self, "position", data.get("position")) + + self.haveMetrics = True if data.get("device_metrics", {}) else False + if grabMetrics and data.get("device_metrics", {}): + setattr(self, "device_metrics", data.get("device_metrics")) + class NodeShortDTO: def __init__(self, data): for slot in ["num", "long_name", "short_name"]: diff --git a/webExtensions/nodeList.py b/webExtensions/nodeList.py index 8f97aca..68026e7 100644 --- a/webExtensions/nodeList.py +++ b/webExtensions/nodeList.py @@ -17,15 +17,15 @@ class WebExtension: @self.app.get(f"{self.core.context}/nodes/list") @self.core.authManager.authRequest() - async def listOfNodes(request: Request): + async def listOfNodes(request: Request, p: bool = Query(False), m:bool = Query(False)): l = await self.dbService.listOfNodes() - return [NodeDTO(node) for node in l] + return [NodeDTO(node, p, m) for node in l] @self.app.get(f"{self.core.context}/nodes/direct") @self.core.authManager.authRequest() - async def listOfDirectNodes(request: Request): + async def listOfDirectNodes(request: Request, p: bool = Query(False), m:bool = Query(False)): l = await self.dbService.listOfDirectNodes() - return [NodeDTO(node) for node in l] + return [NodeDTO(node, p, m) for node in l] @self.app.get(self.core.context + "/nodes/search") async def listOfFindLikeName(name=str): @@ -34,18 +34,18 @@ class WebExtension: @self.app.get(self.core.context + "/nodes/{num}") @self.core.authManager.authRequest() - async def oneNode(request: Request, num: int): + async def oneNode(request: Request, num: int, p: bool = Query(False), m:bool = Query(False)): c = await self.dbService.oneNode(num) if c: - return NodeDTO(c) + return NodeDTO(c, p, m) else: raise HTMLResponse(status_code=404) @self.app.get(self.core.context + "/nodes") @self.core.authManager.authRequest() - async def listOfSelectedNodes(request: Request, nums: List[int] = Query(None)): + async def listOfSelectedNodes(request: Request, nums: List[int] = Query(None), p: bool = Query(False), m:bool = Query(False)): if type(nums) != list: nums = [nums] l = await self.dbService.listOfSelectedNodes(nums) - return [NodeDTO(node) for node in l] \ No newline at end of file + return [NodeDTO(node, p, m) for node in l] \ No newline at end of file