mirror of
https://github.com/jokob-sk/NetAlertX.git
synced 2025-12-07 09:36:05 -08:00
Merge pull request #1156 from ingoratsdorf/contrib
Adding secondary cache to settings
This commit is contained in:
@@ -290,6 +290,7 @@ def write_file(pPath, pText):
|
|||||||
|
|
||||||
SETTINGS_CACHE = {}
|
SETTINGS_CACHE = {}
|
||||||
SETTINGS_LASTCACHEDATE = 0
|
SETTINGS_LASTCACHEDATE = 0
|
||||||
|
SETTINGS_SECONDARYCACHE={}
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
# Return whole setting touple
|
# Return whole setting touple
|
||||||
@@ -307,7 +308,7 @@ def get_setting(key):
|
|||||||
Returns:
|
Returns:
|
||||||
dict | None: The setting dictionary for the key, or None if not found.
|
dict | None: The setting dictionary for the key, or None if not found.
|
||||||
"""
|
"""
|
||||||
global SETTINGS_LASTCACHEDATE, SETTINGS_CACHE
|
global SETTINGS_LASTCACHEDATE, SETTINGS_CACHE, SETTINGS_SECONDARYCACHE
|
||||||
|
|
||||||
settingsFile = apiPath + 'table_settings.json'
|
settingsFile = apiPath + 'table_settings.json'
|
||||||
try:
|
try:
|
||||||
@@ -327,7 +328,9 @@ def get_setting(key):
|
|||||||
mylog('trace', ['[Import table_settings.json] using cached version'])
|
mylog('trace', ['[Import table_settings.json] using cached version'])
|
||||||
return SETTINGS_CACHE.get(key)
|
return SETTINGS_CACHE.get(key)
|
||||||
|
|
||||||
SETTINGS_LASTCACHEDATE = fileModifiedTime
|
# invalidate CACHE
|
||||||
|
SETTINGS_CACHE = {}
|
||||||
|
SETTINGS_SECONDARYCACHE={}
|
||||||
|
|
||||||
# Load JSON and populate cache
|
# Load JSON and populate cache
|
||||||
try:
|
try:
|
||||||
@@ -341,6 +344,9 @@ def get_setting(key):
|
|||||||
mylog('none', [f'[Settings] ⚠ Value error: {e} in file {settingsFile}'])
|
mylog('none', [f'[Settings] ⚠ Value error: {e} in file {settingsFile}'])
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
# Only update file date when we successfully parsed the file
|
||||||
|
SETTINGS_LASTCACHEDATE = fileModifiedTime
|
||||||
|
|
||||||
if key not in SETTINGS_CACHE:
|
if key not in SETTINGS_CACHE:
|
||||||
mylog('none', [f'[Settings] ⚠ ERROR - setting_missing - {key} not in {settingsFile}'])
|
mylog('none', [f'[Settings] ⚠ ERROR - setting_missing - {key} not in {settingsFile}'])
|
||||||
return None
|
return None
|
||||||
@@ -365,9 +371,14 @@ def get_setting_value(key):
|
|||||||
Any: The Python-typed setting value, or an empty string if not found.
|
Any: The Python-typed setting value, or an empty string if not found.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
global SETTINGS_SECONDARYCACHE
|
||||||
|
|
||||||
# Returns empty string if not found
|
# Returns empty string if not found
|
||||||
value = ''
|
value = ''
|
||||||
|
|
||||||
|
# lookup key in secondary cache
|
||||||
|
if key in SETTINGS_SECONDARYCACHE:
|
||||||
|
return SETTINGS_SECONDARYCACHE[key]
|
||||||
# Prefer conf.mySettings if available
|
# Prefer conf.mySettings if available
|
||||||
if hasattr(conf, "mySettings") and conf.mySettings:
|
if hasattr(conf, "mySettings") and conf.mySettings:
|
||||||
# conf.mySettings is a list of tuples, find by key (tuple[0])
|
# conf.mySettings is a list of tuples, find by key (tuple[0])
|
||||||
@@ -379,9 +390,10 @@ def get_setting_value(key):
|
|||||||
value = setting_value_to_python_type(set_type, set_value)
|
value = setting_value_to_python_type(set_type, set_value)
|
||||||
else:
|
else:
|
||||||
value = setting_value_to_python_type(set_type, str(set_value))
|
value = setting_value_to_python_type(set_type, str(set_value))
|
||||||
|
SETTINGS_SECONDARYCACHE[key] = value
|
||||||
return value
|
return value
|
||||||
|
|
||||||
# Otherwise fall back toretrive from json
|
# Otherwise fall back to retrive from json
|
||||||
setting = get_setting(key)
|
setting = get_setting(key)
|
||||||
|
|
||||||
if setting is not None:
|
if setting is not None:
|
||||||
@@ -394,6 +406,7 @@ def get_setting_value(key):
|
|||||||
set_type = setting["setType"] # Setting type # lower case "type" - default json value vs uppper-case "setType" (= from user defined settings)
|
set_type = setting["setType"] # Setting type # lower case "type" - default json value vs uppper-case "setType" (= from user defined settings)
|
||||||
|
|
||||||
value = setting_value_to_python_type(set_type, set_value)
|
value = setting_value_to_python_type(set_type, set_value)
|
||||||
|
SETTINGS_SECONDARYCACHE[key] = value
|
||||||
|
|
||||||
return value
|
return value
|
||||||
|
|
||||||
@@ -814,4 +827,3 @@ class noti_obj:
|
|||||||
self.json = json
|
self.json = json
|
||||||
self.text = text
|
self.text = text
|
||||||
self.html = html
|
self.html = html
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user