From fb062243d627f2f34036b654d03d154b180e3b1b Mon Sep 17 00:00:00 2001 From: Frederik Jaeckel Date: Sat, 23 Dec 2023 10:44:55 +0100 Subject: [PATCH] remove caching --- asset.py | 21 ++--------- assetsetting.py | 10 ----- book.py | 97 +++---------------------------------------------- 3 files changed, 9 insertions(+), 119 deletions(-) diff --git a/asset.py b/asset.py index f805724..794e885 100644 --- a/asset.py +++ b/asset.py @@ -3,8 +3,7 @@ # The COPYRIGHT file at the top level of this repository contains the # full copyright notices and license terms. -from trytond.pool import Pool, PoolMeta -CACHEKEY_ASSETRATE = 'assetrate-%s' +from trytond.pool import PoolMeta class AssetRate(metaclass=PoolMeta): @@ -14,34 +13,22 @@ class AssetRate(metaclass=PoolMeta): def create(cls, vlist): """ update cache-value """ - MemCache = Pool().get('cashbook.memcache') - records = super(AssetRate, cls).create(vlist) - for rate in records: - MemCache.record_update(CACHEKEY_ASSETRATE % rate.asset.id, rate) + # TODO: update cashbooks using this asset return records @classmethod def write(cls, *args): """ update cache-value """ - MemCache = Pool().get('cashbook.memcache') - super(AssetRate, cls).write(*args) - - actions = iter(args) - for rates, values in zip(actions, actions): - for rate in rates: - MemCache.record_update(CACHEKEY_ASSETRATE % rate.asset.id, rate) + # TODO: update cashbooks using this asset @classmethod def delete(cls, records): """ set cache to None """ - MemCache = Pool().get('cashbook.memcache') - - for record in records: - MemCache.record_update(CACHEKEY_ASSETRATE % record.asset.id, None) super(AssetRate, cls).delete(records) + # TODO: update cashbooks using this asset # end diff --git a/assetsetting.py b/assetsetting.py index b5981dd..2d9386b 100644 --- a/assetsetting.py +++ b/assetsetting.py @@ -5,7 +5,6 @@ from trytond.model import ModelSingleton, ModelView, ModelSQL, fields -from trytond.pool import Pool class AssetSetting(ModelSingleton, ModelSQL, ModelView): @@ -25,13 +24,4 @@ class AssetSetting(ModelSingleton, ModelSQL, ModelView): model_name='cashbook.book', ondelete='RESTRICT', help='Profit and loss on sale of assets are recorded in the cash book.') - @classmethod - def write(cls, *args): - """ clear cache-values - """ - MemCache = Pool().get('cashbook.memcache') - - MemCache._cashbook_value_cache.clear_all() - super(AssetSetting, cls).write(*args) - # end AssetSetting diff --git a/book.py b/book.py index b7470e4..5e27b4b 100644 --- a/book.py +++ b/book.py @@ -9,33 +9,14 @@ from trytond.pyson import Eval, Or, Len, Bool, If from trytond.modules.cashbook.book import STATES2, DEPENDS2 from trytond.transaction import Transaction from trytond.report import Report -from trytond.config import config from decimal import Decimal from datetime import timedelta from sql import Literal from sql.functions import CurrentDate from sql.aggregate import Sum from sql.conditionals import Case, Coalesce -from trytond.modules.cashbook.model import sub_ids_hierarchical,\ - CACHEKEY_CURRENCY, AnyInArray -from .asset import CACHEKEY_ASSETRATE - - -# enable/disable caching of cachekey for 'currency.rate' -if config.get( - 'cashbook', 'cache_currency', - default='yes').lower() in ['yes', '1', 'true']: - ENA_CURRKEY = True -else: - ENA_CURRKEY = False - -# enable/disable caching of cachekey for 'currency.rate' -if config.get( - 'cashbook', 'cache_asset', - default='yes').lower() in ['yes', '1', 'true']: - ENA_ASSETKEY = True -else: - ENA_ASSETKEY = False +from trytond.modules.cashbook.model import ( + sub_ids_hierarchical, AnyInArray) class Book(SymbolMixin, metaclass=PoolMeta): @@ -291,7 +272,6 @@ class Book(SymbolMixin, metaclass=PoolMeta): """ pool = Pool() IrDate = pool.get('ir.date') - MemCache = pool.get('cashbook.memcache') cursor = Transaction().connection.cursor() context = Transaction().context result = { @@ -309,40 +289,13 @@ class Book(SymbolMixin, metaclass=PoolMeta): ).quantize(Decimal(str(1/10 ** digits))) query_date = context.get('date', IrDate.today()) - cache_keys = { - x.id: MemCache.get_key_by_record( - name='get_yield_data', - record=x, - query=[{ - 'model': 'cashbook.line', - 'query': [('cashbook.parent', 'child_of', [x.id])], - }, { - 'model': 'currency.currency.rate', - 'query': [('currency.id', '=', x.currency.id)], - 'cachekey' if ENA_CURRKEY else 'disabled': - CACHEKEY_CURRENCY % x.currency.id, - }, { - 'model': 'investment.rate', - 'query': [('asset.id', '=', x.asset.id)], - 'cachekey' if ENA_ASSETKEY else 'disabled': - CACHEKEY_ASSETRATE % x.asset.id, - } if x.asset is not None else {}], - addkeys=[query_date.isoformat()]) - for x in cashbooks - } - - # read from cache - (todo_cashbook, result) = MemCache.read_from_cache( - cashbooks, cache_keys, names, result) - if len(todo_cashbook) == 0: - return result # results for 'total' records_total = [] records_12m = [] - if len(todo_cashbook) > 0: + if cashbooks: (tab_book1, query_total) = cls.get_yield_data_sql() - query_total.where &= tab_book1.id.in_([x.id for x in todo_cashbook]) + query_total.where &= tab_book1.id.in_([x.id for x in cashbooks]) cursor.execute(*query_total) records_total = cursor.fetchall() @@ -351,7 +304,7 @@ class Book(SymbolMixin, metaclass=PoolMeta): date_to=query_date, date_from=query_date - timedelta(days=365), ) - query_12m.where &= tab_book2.id.in_([x.id for x in todo_cashbook]) + query_12m.where &= tab_book2.id.in_([x.id for x in cashbooks]) cursor.execute(*query_12m) records_12m = cursor.fetchall() @@ -370,9 +323,6 @@ class Book(SymbolMixin, metaclass=PoolMeta): record[2], record[4]) result['yield_sales_12m'][record[0]] = quantize_val( record[3], record[4]) - - # store to cache - MemCache.store_result(cashbooks, cache_keys, result, todo_cashbook) return {x: result[x] for x in names} @classmethod @@ -457,10 +407,7 @@ class Book(SymbolMixin, metaclass=PoolMeta): CBook = pool.get('cashbook.book') Uom = pool.get('product.uom') Currency = pool.get('currency.currency') - IrDate = pool.get('ir.date') - MemCache = pool.get('cashbook.memcache') cursor = Transaction().connection.cursor() - context = Transaction().context (query, tab_book) = cls.get_asset_quantity_sql() company_currency = CBook.default_currency() @@ -473,37 +420,6 @@ class Book(SymbolMixin, metaclass=PoolMeta): 'digits'] } - cache_keys = { - x.id: MemCache.get_key_by_record( - name='get_asset_quantity', - record=x, - query=[{ - 'model': 'cashbook.line', - 'query': [('cashbook.parent', 'child_of', [x.id])], - }, { - 'model': 'currency.currency.rate', - 'query': [('currency.id', '=', x.currency.id)], - 'cachekey' if ENA_CURRKEY else 'disabled': - CACHEKEY_CURRENCY % x.currency.id, - }, { - 'model': 'investment.rate', - 'query': [('asset.id', '=', x.asset.id)], - 'cachekey' if ENA_ASSETKEY else 'disabled': - CACHEKEY_ASSETRATE % x.asset.id, - } if x.asset is not None else {}], - addkeys=[ - str(company_currency), - str(context.get('qdate', IrDate.today()).toordinal()), - ]) - for x in cashbooks - } - - # read from cache - (todo_cashbook, result) = MemCache.read_from_cache( - cashbooks, cache_keys, names, result) - if len(todo_cashbook) == 0: - return result - def values_from_record(rdata): """ compute values for record """ @@ -644,9 +560,6 @@ class Book(SymbolMixin, metaclass=PoolMeta): Decimal('100.0') * c_val / p_amount - Decimal('100.0') ).quantize(Decimal(str(1/10 ** digits))) result['digits'][id_book] = None - - # store to cache - MemCache.store_result(cashbooks, cache_keys, result, todo_cashbook) return {x: result[x] for x in names} @fields.depends('id')