0.0.1 init, main page prepare
This commit is contained in:
51
BaseModels/currency_exchange/funcs.py
Normal file
51
BaseModels/currency_exchange/funcs.py
Normal file
@@ -0,0 +1,51 @@
|
||||
import requests
|
||||
import json
|
||||
from datetime import datetime, timedelta
|
||||
from BaseModels.mailSender import techSendMail
|
||||
from GeneralApp.temp_data_funcs import *
|
||||
|
||||
|
||||
def get_rate_nb_by_currency_code(code, date=None):
|
||||
from .nbrb.nbrb_currency_exchange import get_nbrb_rate_by_currency_code
|
||||
from .alfabank_api.alfabank_api_funcs import get_alfabank_nb_rate_by_currency_code
|
||||
|
||||
if code == 'BYN':
|
||||
return 1
|
||||
|
||||
rate = None
|
||||
request_required = True
|
||||
|
||||
try:
|
||||
|
||||
tmp_rec = get_tmp_data('currency_rate', code)
|
||||
if tmp_rec and tmp_rec.json_data:
|
||||
if 'rate' in tmp_rec.json_data:
|
||||
# если с момента последнего импорта прошло меньше 30 минут - забираем курс из базы
|
||||
if datetime.strptime(tmp_rec.json_data['DT'], '%d.%m.%Y %H:%M') + timedelta(
|
||||
minutes=30) > datetime.now():
|
||||
rate = tmp_rec.json_data['rate']
|
||||
|
||||
if not rate:
|
||||
# если с последней попытки меньше минуты - отдаем старый курс или None
|
||||
if tmp_rec.modifiedDT + timedelta(minutes=5) > datetime.now():
|
||||
if 'rate' in tmp_rec.json_data:
|
||||
rate = tmp_rec.json_data['rate']
|
||||
else:
|
||||
request_required = False
|
||||
|
||||
if request_required:
|
||||
if not rate:
|
||||
rate = get_alfabank_nb_rate_by_currency_code(code)
|
||||
|
||||
# if not rate:
|
||||
# rate = get_nbrb_rate_by_currency_code(code)
|
||||
|
||||
tmp_rec.modifiedDT = datetime.now()
|
||||
tmp_rec.save()
|
||||
|
||||
except Exception as e:
|
||||
msg = f'<b style="color : red;">!!!!! --- get_rate_nb_by_currency_code error={str(e)}</b>'
|
||||
print(msg)
|
||||
techSendMail(msg, 'tE get_rate_nb_by_currency_code error')
|
||||
|
||||
return rate
|
||||
Reference in New Issue
Block a user