asset:tabellenzugriff optimiert,
diagram: darstellung in diagramm ergänzt
This commit is contained in:
parent
83acfbb14b
commit
1a61b112e0
9 changed files with 352 additions and 6 deletions
18
asset.py
18
asset.py
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue