rate-update ok

This commit is contained in:
Frederik Jaeckel 2022-11-22 22:43:28 +01:00
parent ffba5c2a45
commit 38b9847ccc
4 changed files with 129 additions and 13 deletions

View file

@ -219,9 +219,51 @@ class OnlineSource(ModelSQL, ModelView):
def update_rate(cls, asset):
""" read data from inet, write result to rates of asset
"""
pool = Pool()
Rate = pool.get('investment.rate')
if asset.updtsource is None:
return
rate_data = cls.read_from_website(asset.updtsource)
rate_data = cls.read_from_website(
asset.updtsource,
isin = asset.isin,
nsin = asset.wkn,
symbol = asset.secsymb,
)
if len(asset.updtsource.rgxident or '') > 0:
# check result - same code?
code = rate_data.get('code', None)
if code:
asset_code = getattr(asset, {
'isin': 'isin',
'nsin': 'wkn',
'symbol': 'secsymb',
}[asset.updtsource.rgxidtype])
if (asset_code or '').lower() != code.lower():
# fail
logger.warning(
'update_rate: got wrong code "%(wrong)s" - expected "%(exp)s"' % {
'exp': asset_code,
'wrong': code,
})
return False
to_create = {
'date': rate_data.get('date', None),
'rate': rate_data.get('rate', None),
'asset': asset.id,
}
if (to_create['date'] is not None) and \
(to_create['rate'] is not None):
# check if exists
if Rate.search_count([
('asset.id', '=', asset.id),
('date', '=', to_create['date']),
]) == 0:
Rate.create([to_create])
return True
return False
def get_regex_result(self, html_text, field_name):
""" run regex on html-text, convert result
@ -256,7 +298,7 @@ class OnlineSource(ModelSQL, ModelView):
return result
@classmethod
def read_from_website(cls, updtsource, isin=None, nsin=None, symbol=None, debug=True):
def read_from_website(cls, updtsource, isin=None, nsin=None, symbol=None, debug=False):
""" read from url, extract values
"""
result = {}