cache: deepcopy for store/recall values

This commit is contained in:
Frederik Jaeckel 2023-03-02 14:12:18 +01:00
parent 2bfe732c33
commit dc70beb0c9

View file

@ -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():