From dc70beb0c9320850a1fa2aee6871978cc96d6a50 Mon Sep 17 00:00:00 2001 From: Frederik Jaeckel Date: Thu, 2 Mar 2023 14:12:18 +0100 Subject: [PATCH] cache: deepcopy for store/recall values --- model.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/model.py b/model.py index d27a5bd..ca6eb74 100644 --- a/model.py +++ b/model.py @@ -12,6 +12,8 @@ from decimal import Decimal from sql import With, Literal from sql.functions import Function from sql.conditionals import Coalesce +import copy + ENABLE_CACHE = True CACHEKEY_CURRENCY = 'currency-%s' @@ -86,7 +88,7 @@ class MemCache(Model): """ if ENABLE_CACHE == False: return None - return cls._cashbook_value_cache.get(cache_key) + return copy.deepcopy(cls._cashbook_value_cache.get(cache_key)) @classmethod def store_result(cls, records, cache_keys, values): @@ -98,7 +100,7 @@ class MemCache(Model): data = {x:values[x][record.id] for x in values.keys() if record.id in values[x].keys()} - cls._cashbook_value_cache.set(cache_keys[record.id], data) + cls._cashbook_value_cache.set(cache_keys[record.id], copy.deepcopy(data)) @classmethod def store_value(cls, cache_key, values): @@ -106,7 +108,7 @@ class MemCache(Model): """ if ENABLE_CACHE == False: return - cls._cashbook_value_cache.set(cache_key, values) + cls._cashbook_value_cache.set(cache_key, copy.deepcopy(values)) @classmethod def read_from_cache(cls, records, cache_keys, names, result): @@ -117,7 +119,7 @@ class MemCache(Model): todo_records = [] for record in records: - values = cls.read_value(cache_keys[record.id]) + values = copy.deepcopy(cls.read_value(cache_keys[record.id])) if values: for name in names: if name not in values.keys():