diagram: interpolator ergänzt,
asset: berechnung 'nextupdate' korrigiert
This commit is contained in:
parent
d08cf19b60
commit
7334e53f9f
7 changed files with 303 additions and 67 deletions
37
diagram.py
37
diagram.py
|
@ -89,6 +89,43 @@ class GraphDef(metaclass=PoolMeta):
|
|||
class ChartPoint(metaclass=PoolMeta):
|
||||
__name__ = 'diagram.point'
|
||||
|
||||
@classmethod
|
||||
def get_interpolated_val(cls, keyname, query_date):
|
||||
""" query two neighbour-values to
|
||||
interpolate missing value
|
||||
"""
|
||||
Rate = Pool().get('investment.rate')
|
||||
|
||||
if keyname is None:
|
||||
return None
|
||||
|
||||
# check if query is for us
|
||||
if keyname.startswith('asset'):
|
||||
asset_id = int(keyname[len('asset'):])
|
||||
|
||||
before = Rate.search([
|
||||
('date', '<', query_date),
|
||||
('asset.id', '=', asset_id),
|
||||
], limit=1, order=[('date', 'DESC')])
|
||||
|
||||
after = Rate.search([
|
||||
('date', '>', query_date),
|
||||
('asset.id', '=', asset_id),
|
||||
], limit=1, order=[('date', 'ASC')])
|
||||
|
||||
if (len(before) == 1) and (len(after) == 1):
|
||||
result = cls.interpolate_linear(
|
||||
(after[0].date, after[0].rate),
|
||||
(before[0].date, before[0].rate),
|
||||
query_date
|
||||
)
|
||||
return result
|
||||
elif len(before) == 1:
|
||||
return before[0].rate
|
||||
elif len(after) == 1:
|
||||
return after[0].rate
|
||||
return super(ChartPoint, cls).get_interpolated_val(keyname, query_date)
|
||||
|
||||
@classmethod
|
||||
def get_table_parts(cls):
|
||||
""" return a list of tables to union,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue