From 3b9de6c0bb6764344b729ee37c2e981d12759a26 Mon Sep 17 00:00:00 2001 From: Frederik Jaeckel Date: Thu, 22 Jun 2023 17:28:58 +0200 Subject: [PATCH] asset: fixed possible exceptions --- asset.py | 65 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 33 insertions(+), 32 deletions(-) diff --git a/asset.py b/asset.py index d599d7b..06bade6 100644 --- a/asset.py +++ b/asset.py @@ -330,23 +330,24 @@ class Asset(SymbolMixin, ModelSQL, ModelView): """ cursor = Transaction().connection.cursor() - (query, tab_asset) = cls.get_name_symbol_sql() - query.where = tab_asset.id.in_([x.id for x in assets]) - - cursor.execute(*query) - records = cursor.fetchall() result = {x: {y.id: None for y in assets} for x in names} - for record in records: - values = { - 'name': record[1], - 'product_uom': record[2], - 'symbol': record[3], - 'asset_symbol': record[0], - } + (query, tab_asset) = cls.get_name_symbol_sql() + if assets: + query.where = tab_asset.id.in_([x.id for x in assets]) + cursor.execute(*query) + records = cursor.fetchall() - for name in names: - result[name][record[0]] = values[name] + for record in records: + values = { + 'name': record[1], + 'product_uom': record[2], + 'symbol': record[3], + 'asset_symbol': record[0], + } + + for name in names: + result[name][record[0]] = values[name] return result @classmethod @@ -384,32 +385,32 @@ class Asset(SymbolMixin, ModelSQL, ModelView): def get_rate_data(cls, assets, names): """ get date and rate of asset """ - Asset2 = Pool().get('investment.asset') - cursor = Transaction().connection.cursor() - (query, tab_asset) = cls.get_rate_data_sql() - query.where = tab_asset.id.in_([x.id for x in assets]) - - cursor.execute(*query) - records = cursor.fetchall() result = {x: {y.id: None for y in assets} for x in names} - for record in records: - (id1, rate1, date1, id_rate) = record + if assets: + (query, tab_asset) = cls.get_rate_data_sql() + query.where = tab_asset.id.in_([x.id for x in assets]) + curr_digits = {x.id: x.currency_digits for x in assets} - asset = Asset2(id1) - exp = Decimal(Decimal(1) / 10 ** (asset.currency_digits or 4)) + cursor.execute(*query) + records = cursor.fetchall() - values = { - 'rate': record[1].quantize(exp), - 'date': record[2], - 'change_symbol': id_rate, - } + for record in records: + (id1, rate1, date1, id_rate) = record - for name in names: - result[name][record[0]] = values[name] + curr_dig = curr_digits.get(id1, 4) + exp = Decimal(Decimal(1) / 10 ** curr_dig) + values = { + 'rate': record[1].quantize(exp), + 'date': record[2], + 'change_symbol': id_rate, + } + + for name in names: + result[name][record[0]] = values[name] return result @classmethod