Use float-safe totals to avoid precision loss
parent
935ce15626
commit
23358902ca
|
|
@ -21,21 +21,21 @@ from .WireguardConfigurationInfo import WireguardConfigurationInfo, PeerGroupsCl
|
|||
from .DashboardWebHooks import DashboardWebHooks
|
||||
|
||||
|
||||
def _safe_int(value) -> int:
|
||||
def _safe_float(value) -> float:
|
||||
try:
|
||||
if value is None:
|
||||
return 0
|
||||
return 0.0
|
||||
if isinstance(value, bool):
|
||||
return int(value)
|
||||
return float(value)
|
||||
if isinstance(value, (int, float)):
|
||||
return int(value)
|
||||
return float(value)
|
||||
if isinstance(value, str):
|
||||
if value.strip() == "":
|
||||
return 0
|
||||
return int(float(value))
|
||||
return int(value)
|
||||
return 0.0
|
||||
return float(value)
|
||||
return float(value)
|
||||
except Exception:
|
||||
return 0
|
||||
return 0.0
|
||||
|
||||
|
||||
class WireguardConfiguration:
|
||||
|
|
@ -889,11 +889,11 @@ class WireguardConfiguration:
|
|||
def toJson(self):
|
||||
self.Status = self.getStatus()
|
||||
def peer_total(peer):
|
||||
return _safe_int(peer.cumu_data) + _safe_int(peer.total_data)
|
||||
return _safe_float(peer.cumu_data) + _safe_float(peer.total_data)
|
||||
def peer_sent(peer):
|
||||
return _safe_int(peer.cumu_sent) + _safe_int(peer.total_sent)
|
||||
return _safe_float(peer.cumu_sent) + _safe_float(peer.total_sent)
|
||||
def peer_receive(peer):
|
||||
return _safe_int(peer.cumu_receive) + _safe_int(peer.total_receive)
|
||||
return _safe_float(peer.cumu_receive) + _safe_float(peer.total_receive)
|
||||
return {
|
||||
"Status": self.Status,
|
||||
"Name": self.Name,
|
||||
|
|
|
|||
Loading…
Reference in New Issue