From 7ff56544480981d7d497b0c50147331b92158c59 Mon Sep 17 00:00:00 2001 From: Oliver Date: Tue, 17 Oct 2023 15:50:05 +1100 Subject: [PATCH] Cache default currency (#5723) - Prevents multiple (failing) database hits during server startup - Prevents multiple (failing) database hits during migration checks --- InvenTree/common/settings.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/InvenTree/common/settings.py b/InvenTree/common/settings.py index c381826272..485b75aaca 100644 --- a/InvenTree/common/settings.py +++ b/InvenTree/common/settings.py @@ -3,6 +3,7 @@ import logging from django.conf import settings +from django.core.cache import cache from moneyed import CURRENCIES @@ -14,8 +15,13 @@ def currency_code_default(): from common.models import InvenTreeSetting + cached_value = cache.get('currency_code_default', '') + + if cached_value: + return cached_value + try: - code = InvenTreeSetting.get_setting('INVENTREE_DEFAULT_CURRENCY', create=True, cache=True) + code = InvenTreeSetting.get_setting('INVENTREE_DEFAULT_CURRENCY', backup_value='', create=True, cache=True) except Exception: # pragma: no cover # Database may not yet be ready, no need to throw an error here code = '' @@ -23,6 +29,9 @@ def currency_code_default(): if code not in CURRENCIES: code = 'USD' # pragma: no cover + # Cache the value for a short amount of time + cache.set('currency_code_default', code, 30) + return code