mirror of
https://github.com/jokob-sk/NetAlertX.git
synced 2026-03-31 07:12:23 -07:00
Add next scan ETA display and update app state with scan timing information
This commit is contained in:
@@ -124,8 +124,16 @@ def main():
|
||||
# last time any scan or maintenance/upkeep was run
|
||||
conf.last_scan_run = loop_start_time
|
||||
|
||||
# Header
|
||||
updateState("Process: Start")
|
||||
# Compute the next scheduled run time across enabled device_scanner plugins
|
||||
scanner_prefixes = {p["unique_prefix"] for p in all_plugins if p.get("plugin_type") == "device_scanner"}
|
||||
scanner_next = [s.last_next_schedule for s in conf.mySchedules if s.service in scanner_prefixes]
|
||||
next_scan_dt = min(scanner_next, default=None)
|
||||
next_scan_time_iso = next_scan_dt.replace(microsecond=0).isoformat() if next_scan_dt else ""
|
||||
|
||||
# Header (also broadcasts last_scan_run + next_scan_time to frontend via SSE / app_state.json)
|
||||
updateState("Process: Start",
|
||||
last_scan_run=loop_start_time.replace(microsecond=0).isoformat(),
|
||||
next_scan_time=next_scan_time_iso)
|
||||
|
||||
# Timestamp
|
||||
startTime = loop_start_time
|
||||
|
||||
@@ -43,7 +43,9 @@ class app_state_class:
|
||||
processScan=False,
|
||||
pluginsStates=None,
|
||||
appVersion=None,
|
||||
buildTimestamp=None
|
||||
buildTimestamp=None,
|
||||
last_scan_run=None,
|
||||
next_scan_time=None
|
||||
):
|
||||
"""
|
||||
Initialize the application state, optionally overwriting previous values.
|
||||
@@ -89,6 +91,8 @@ class app_state_class:
|
||||
self.pluginsStates = previousState.get("pluginsStates", {})
|
||||
self.appVersion = previousState.get("appVersion", "")
|
||||
self.buildTimestamp = previousState.get("buildTimestamp", "")
|
||||
self.last_scan_run = previousState.get("last_scan_run", "")
|
||||
self.next_scan_time = previousState.get("next_scan_time", "")
|
||||
else: # init first time values
|
||||
self.settingsSaved = 0
|
||||
self.settingsImported = 0
|
||||
@@ -101,6 +105,8 @@ class app_state_class:
|
||||
self.pluginsStates = {}
|
||||
self.appVersion = ""
|
||||
self.buildTimestamp = ""
|
||||
self.last_scan_run = ""
|
||||
self.next_scan_time = ""
|
||||
|
||||
# Overwrite with provided parameters if supplied
|
||||
if settingsSaved is not None:
|
||||
@@ -133,6 +139,10 @@ class app_state_class:
|
||||
self.appVersion = appVersion
|
||||
if buildTimestamp is not None:
|
||||
self.buildTimestamp = buildTimestamp
|
||||
if last_scan_run is not None:
|
||||
self.last_scan_run = last_scan_run
|
||||
if next_scan_time is not None:
|
||||
self.next_scan_time = next_scan_time
|
||||
# check for new version every hour and if currently not running new version
|
||||
if self.isNewVersion is False and self.isNewVersionChecked + 3600 < int(
|
||||
timeNowUTC(as_string=False).timestamp()
|
||||
@@ -165,7 +175,9 @@ class app_state_class:
|
||||
self.settingsImported,
|
||||
timestamp=self.lastUpdated,
|
||||
appVersion=self.appVersion,
|
||||
buildTimestamp=self.buildTimestamp
|
||||
buildTimestamp=self.buildTimestamp,
|
||||
last_scan_run=self.last_scan_run,
|
||||
next_scan_time=self.next_scan_time
|
||||
)
|
||||
except Exception as e:
|
||||
mylog("none", [f"[app_state] SSE broadcast: {e}"])
|
||||
@@ -183,7 +195,9 @@ def updateState(newState = None,
|
||||
processScan = None,
|
||||
pluginsStates=None,
|
||||
appVersion=None,
|
||||
buildTimestamp=None):
|
||||
buildTimestamp=None,
|
||||
last_scan_run=None,
|
||||
next_scan_time=None):
|
||||
"""
|
||||
Convenience method to create or update the app state.
|
||||
|
||||
@@ -197,6 +211,8 @@ def updateState(newState = None,
|
||||
pluginsStates (dict, optional): Plugin state updates.
|
||||
appVersion (str, optional): Application version.
|
||||
buildTimestamp (str, optional): Build timestamp.
|
||||
last_scan_run (str, optional): ISO timestamp of last backend scan run.
|
||||
next_scan_time (str, optional): ISO timestamp of next scheduled device_scanner run.
|
||||
|
||||
Returns:
|
||||
app_state_class: Updated state object.
|
||||
@@ -210,7 +226,9 @@ def updateState(newState = None,
|
||||
processScan,
|
||||
pluginsStates,
|
||||
appVersion,
|
||||
buildTimestamp
|
||||
buildTimestamp,
|
||||
last_scan_run,
|
||||
next_scan_time
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user