109 lines
3.3 KiB
Python
109 lines
3.3 KiB
Python
import requests
|
|
import json
|
|
from datetime import datetime, timedelta
|
|
from BaseModels.mailSender import techSendMail
|
|
from GeneralApp.temp_data_funcs import *
|
|
|
|
|
|
def get_alfabank_nb_rate_by_currency_code(code, date=None):
|
|
rate = None
|
|
res = None
|
|
req_str = None
|
|
|
|
try:
|
|
|
|
msg = f'get_alfabank_nb_rate_by_currency_code'
|
|
print(msg)
|
|
|
|
int_code = None
|
|
if code == 'USD':
|
|
int_code = 840
|
|
elif code == 'EUR':
|
|
int_code = 978
|
|
elif code == 'RUB':
|
|
int_code = 643
|
|
|
|
code_str = ''
|
|
if int_code:
|
|
code_str = f'?currencyCode={int_code}'
|
|
|
|
date_str = ''
|
|
if date:
|
|
date_str = f'date={datetime.now().strftime("%d.%m.%Y")}'
|
|
if int_code:
|
|
date_str = f'&{date_str}'
|
|
else:
|
|
date_str = f'?{date_str}'
|
|
|
|
req_str = f'https://developerhub.alfabank.by:8273/partner/1.0.1/public/nationalRates{code_str}{date_str}'
|
|
|
|
try:
|
|
msg = f'GET {req_str}'
|
|
print(msg)
|
|
res = requests.get(req_str)
|
|
msg = f'answer received = {str(res)}'
|
|
print(msg)
|
|
except Exception as e:
|
|
msg = f'Exception GET {req_str} = {str(e)} ({str(res)})'
|
|
print(msg)
|
|
res = None
|
|
|
|
if res:
|
|
|
|
# if not res and res != 200:
|
|
# if tmp_rec:
|
|
# rate = tmp_rec.json_data['rate']
|
|
# else:
|
|
# rate_Dict = {
|
|
# 'rate': 1,
|
|
# 'DT': datetime.now().strftime('%d.%m.%Y %H:%M')
|
|
# }
|
|
# create_or_update_tmp_data('currency_rate', code, rate_Dict)
|
|
# rate = 1
|
|
#
|
|
# msg = '<b style="color : red;">!!!!! --- get_alfabank_nbrb_rate_by_currency_code requests GET error={0}</b><br>{1}<br>{2}<br>rate set = {3}'.format(
|
|
# str(e),
|
|
# str(res),
|
|
# str(req_str),
|
|
# str(rate)
|
|
# )
|
|
# print(msg)
|
|
# techSendMail(msg, 'tE get_alfabank_nbrb_rate_by_currency_code error')
|
|
|
|
data = json.loads(res.content)
|
|
|
|
for item in data['rates']:
|
|
if item['iso'].upper() == code.upper():
|
|
rate = item['rate'] / item['quantity']
|
|
|
|
rate_Dict = {
|
|
'rate': rate,
|
|
'DT': datetime.now().strftime('%d.%m.%Y %H:%M')
|
|
}
|
|
|
|
create_or_update_tmp_data('currency_rate', code, rate_Dict)
|
|
break
|
|
|
|
except Exception as e:
|
|
msg = '<b style="color : red;">!!!!! --- get_alfabank_nb_rate_by_currency_code error={0}</b><br>{1}<br>{2}'.format(
|
|
str(e),
|
|
str(res),
|
|
str(req_str)
|
|
)
|
|
print(msg)
|
|
techSendMail(msg, 'tE get_alfabank_nb_rate_by_currency_code error')
|
|
|
|
# if not res:
|
|
# rate_Dict = {
|
|
# 'rate': 1,
|
|
# 'DT': datetime.now().strftime('%d.%m.%Y %H:%M')
|
|
# }
|
|
# create_or_update_tmp_data('currency_rate', code, rate_Dict)
|
|
# return 1
|
|
|
|
# if rate:
|
|
msg = f'get alfabank nb {code} rate = {str(rate)}'
|
|
print(msg)
|
|
|
|
return rate
|