2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-06-18 13:05:42 +00:00

Bypass cache when displaying settings on "settings" page (#4499)

* Bypass cache when displaying settings on "settings" page

- Sometimes caching issues can cause "old" values to be stored (depends on the worker)
- Until we have a shared cache, this is a problem
- Force the settings to be re-loaded from the database when displaying
- Further improvement would be to render them via the API

* Bypass cache for report and label printing

* Update test

(cherry picked from commit 18c7c1d756)
This commit is contained in:
Oliver
2023-03-16 19:55:07 +11:00
committed by GitHub
parent 324a47ba17
commit 16ff1936cd
5 changed files with 17 additions and 14 deletions

View File

@ -318,20 +318,23 @@ def setting_object(key, *args, **kwargs):
(Or return None if the setting does not exist)
if a user-setting was requested return that
"""
cache = kwargs.get('cache', True)
if 'plugin' in kwargs:
# Note, 'plugin' is an instance of an InvenTreePlugin class
plugin = kwargs['plugin']
return PluginSetting.get_setting_object(key, plugin=plugin)
return PluginSetting.get_setting_object(key, plugin=plugin, cache=cache)
if 'method' in kwargs:
return NotificationUserSetting.get_setting_object(key, user=kwargs['user'], method=kwargs['method'])
return NotificationUserSetting.get_setting_object(key, user=kwargs['user'], method=kwargs['method'], cache=cache)
if 'user' in kwargs:
return InvenTreeUserSetting.get_setting_object(key, user=kwargs['user'])
return InvenTreeUserSetting.get_setting_object(key, user=kwargs['user'], cache=cache)
return InvenTreeSetting.get_setting_object(key)
return InvenTreeSetting.get_setting_object(key, cache=cache)
@register.simple_tag()