asset:tabellenzugriff optimiert,

diagram: darstellung in diagramm ergänzt
This commit is contained in:
Frederik Jaeckel 2022-11-26 22:42:02 +01:00
parent 83acfbb14b
commit 1a61b112e0
9 changed files with 352 additions and 6 deletions

View file

@ -244,9 +244,10 @@ class Asset(ModelSQL, ModelView):
return self.company.currency.id
@classmethod
def get_percentage_sql(cls, name_lst):
def get_percentage_sql(cls, name_lst, select_date=True):
""" get table for percentages and dates,
generate adapted query
select_date: True = select newest date
"""
pool = Pool()
Rate = pool.get('investment.rate')
@ -270,13 +271,17 @@ class Asset(ModelSQL, ModelView):
condition=tab_asset.id==tab_rate_today.asset,
).select(
tab_asset.id,
tab_rate_today.id.as_('id_rate'),
tab_rate_today.date,
tab_rate_today.rate,
distinct_on=[tab_asset.id],
order_by=[tab_asset.id, tab_rate_today.date.desc],
where=tab_rate_today.date <= query_date,
)
# limit to newest date until 'query_date'
if select_date == True:
query_today.distinct_on=[tab_asset.id]
query_today.order_by=[tab_asset.id, tab_rate_today.date.desc]
query_today.where=tab_rate_today.date <= query_date
# create join for requested fields, to minimize database-load
query = query_today
for name in name_lst:
@ -290,6 +295,7 @@ class Asset(ModelSQL, ModelView):
# add select for requested fields to join
select_lst = [
query_today.id,
query_today.id_rate,
query_today.date,
]
for name in name_lst:
@ -301,14 +307,14 @@ class Asset(ModelSQL, ModelView):
else_ = None,
).as_(name))
order_by_lst = [query_today.id]
order_by_lst = [query_today.id, query_today.id_rate]
order_by_lst.extend([
rate_tab[name]['tab'].date.desc for name in name_lst
])
query = query.select(
*select_lst,
distinct_on=[query_today.id],
distinct_on=[query_today.id, query_today.id_rate],
order_by=order_by_lst,
)
return query