Call setting hooks after change, rather than before
More convenient for functions that already read the current value from settings.[...]. See next commit Signed-off-by: Jesús <heckyel@hyperbola.info>
This commit is contained in:
parent
4a5a64a975
commit
5df5e99213
12
settings.py
12
settings.py
@ -392,7 +392,7 @@ hooks = {}
|
|||||||
|
|
||||||
|
|
||||||
def add_setting_changed_hook(setting, func):
|
def add_setting_changed_hook(setting, func):
|
||||||
'''Called right before new settings take effect'''
|
'''Called right after new settings take effect'''
|
||||||
if setting in hooks:
|
if setting in hooks:
|
||||||
hooks[setting].append(func)
|
hooks[setting].append(func)
|
||||||
else:
|
else:
|
||||||
@ -447,15 +447,21 @@ def settings_page():
|
|||||||
assert SETTINGS_INFO[setting_name]['type'] is bool, missing_inputs
|
assert SETTINGS_INFO[setting_name]['type'] is bool, missing_inputs
|
||||||
current_settings_dict[setting_name] = False
|
current_settings_dict[setting_name] = False
|
||||||
|
|
||||||
# call setting hooks
|
# find settings that have changed to prepare setting hook calls
|
||||||
|
to_call = []
|
||||||
for setting_name, value in current_settings_dict.items():
|
for setting_name, value in current_settings_dict.items():
|
||||||
old_value = globals()[setting_name]
|
old_value = globals()[setting_name]
|
||||||
if value != old_value and setting_name in hooks:
|
if value != old_value and setting_name in hooks:
|
||||||
for func in hooks[setting_name]:
|
for func in hooks[setting_name]:
|
||||||
func(old_value, value)
|
to_call.append((func, old_value, value))
|
||||||
|
|
||||||
globals().update(current_settings_dict)
|
globals().update(current_settings_dict)
|
||||||
save_settings(current_settings_dict)
|
save_settings(current_settings_dict)
|
||||||
|
|
||||||
|
# call setting hooks
|
||||||
|
for func, old_value, value in to_call:
|
||||||
|
func(old_value, value)
|
||||||
|
|
||||||
return flask.redirect(util.URL_ORIGIN + '/settings', 303)
|
return flask.redirect(util.URL_ORIGIN + '/settings', 303)
|
||||||
else:
|
else:
|
||||||
flask.abort(400)
|
flask.abort(400)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user