asset: fixed possible exceptions

This commit is contained in:
Frederik Jaeckel 2023-06-22 17:28:58 +02:00
parent ddffa302c4
commit 3b9de6c0bb

View file

@ -330,23 +330,24 @@ class Asset(SymbolMixin, ModelSQL, ModelView):
""" """
cursor = Transaction().connection.cursor() 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} result = {x: {y.id: None for y in assets} for x in names}
for record in records: (query, tab_asset) = cls.get_name_symbol_sql()
values = { if assets:
'name': record[1], query.where = tab_asset.id.in_([x.id for x in assets])
'product_uom': record[2], cursor.execute(*query)
'symbol': record[3], records = cursor.fetchall()
'asset_symbol': record[0],
}
for name in names: for record in records:
result[name][record[0]] = values[name] 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 return result
@classmethod @classmethod
@ -384,32 +385,32 @@ class Asset(SymbolMixin, ModelSQL, ModelView):
def get_rate_data(cls, assets, names): def get_rate_data(cls, assets, names):
""" get date and rate of asset """ get date and rate of asset
""" """
Asset2 = Pool().get('investment.asset')
cursor = Transaction().connection.cursor() 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} result = {x: {y.id: None for y in assets} for x in names}
for record in records: if assets:
(id1, rate1, date1, id_rate) = record (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) cursor.execute(*query)
exp = Decimal(Decimal(1) / 10 ** (asset.currency_digits or 4)) records = cursor.fetchall()
values = { for record in records:
'rate': record[1].quantize(exp), (id1, rate1, date1, id_rate) = record
'date': record[2],
'change_symbol': id_rate,
}
for name in names: curr_dig = curr_digits.get(id1, 4)
result[name][record[0]] = values[name] 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 return result
@classmethod @classmethod