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 import With, Literal
from sql.functions import Function from sql.functions import Function
from sql.conditionals import Coalesce from sql.conditionals import Coalesce
import copy
ENABLE_CACHE = True ENABLE_CACHE = True
CACHEKEY_CURRENCY = 'currency-%s' CACHEKEY_CURRENCY = 'currency-%s'
@ -86,7 +88,7 @@ class MemCache(Model):
""" """
if ENABLE_CACHE == False: if ENABLE_CACHE == False:
return None return None
return cls._cashbook_value_cache.get(cache_key) return copy.deepcopy(cls._cashbook_value_cache.get(cache_key))
@classmethod @classmethod
def store_result(cls, records, cache_keys, values): def store_result(cls, records, cache_keys, values):
@ -98,7 +100,7 @@ class MemCache(Model):
data = {x:values[x][record.id] data = {x:values[x][record.id]
for x in values.keys() for x in values.keys()
if record.id in values[x].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 @classmethod
def store_value(cls, cache_key, values): def store_value(cls, cache_key, values):
@ -106,7 +108,7 @@ class MemCache(Model):
""" """
if ENABLE_CACHE == False: if ENABLE_CACHE == False:
return return
cls._cashbook_value_cache.set(cache_key, values) cls._cashbook_value_cache.set(cache_key, copy.deepcopy(values))
@classmethod @classmethod
def read_from_cache(cls, records, cache_keys, names, result): def read_from_cache(cls, records, cache_keys, names, result):
@ -117,7 +119,7 @@ class MemCache(Model):
todo_records = [] todo_records = []
for record in 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: if values:
for name in names: for name in names:
if name not in values.keys(): if name not in values.keys():