def update_from_privat_api(): log = create_logger("MainLog", "main.log") log.info("Started update rate via privatbank api") response = get_rates_from_privat() # response = PrivatApi().get_rates() log.debug(f"response: {response}") check_response(response) rates = [(rate_info["ccy"], rate_info["base_ccy"], float(rate_info["sale"])) for rate_info in response] log.debug(f"rates: {rates}") for from_currency, to_currency, rate in rates: db_rate = XRate.select().where( XRate.from_currency == from_currency, XRate.to_currency == to_currency).first() if not db_rate: db_rate = XRate(from_currency=from_currency, to_currency=to_currency) log.debug(f"{db_rate} was created") db_rate.rate = rate db_rate.save() log.info("Finished update rate via privatbank api")
def get_rates_from_db(): # update_from_privat_api() return [{ "from_currency": rate.from_currency, "to_currency": rate.to_currency, "rate": rate.rate } for rate in XRate.select()]
def _update_all(self): xrates = XRate.select() for rate in xrates: try: self._update_rate(rate.from_currency, rate.to_currency) except Exception as ex: print(ex)
def update_rates(): print(f"Start jobs at {datetime.now()}") xrates = XRate.select() for rate in xrates: try: api.update_rate(rate.from_currency, rate.to_currency) except Exception as ex: print(ex) print(f"Finish jobs at {datetime.now()}")
def _call(self, fmt): xrates = XRate.select() xrates = self._filter(xrates) if fmt == "json": return self._get_json(xrates) elif fmt == "xml": return self._get_xml(xrates) raise ValueError(f"Unknown format: {fmt}")
def update_rates(): log.info('Job started') xrates = XRate.select() for rate in xrates: try: api.update_rate(rate.from_currency, rate.to_currency) except Exception as ex: log.exception(ex) log.info('Job finished')
def _call(self, fmt): xrates = XRate.select() xrates = self._filter(xrates) if fmt == 'json': return self._get_json(xrates) elif fmt == 'xml': return self._get_xml(xrates) raise ValueError(f'Unknown format:{fmt}')
def update_rates(): print(f'Job started at {datetime.now()}') xrates = XRate.select() for rate in xrates: try: api.update_rate(rate.from_currency, rate.to_currency) except Exception as ex: print(ex) print(f'Job finished at {datetime.now()}')
def test_privat_mock(self, ): main.update_from_privat_api() rate = XRate.get_or_none(from_currency="USD", to_currency="UAH") self.assertIsNotNone(rate) self.assertEqual(rate.rate, 30) rates_count = XRate.select().count() self.assertEqual(rates_count, 1)
def update_xrates(from_currency, to_currency): log.info(f'Started update for: {from_currency} => {to_currency}') xrate = XRate.select().where(XRate.from_currency == from_currency, XRate.to_currency == to_currency).first() log.debug(f'rate before: {xrate}') xrate.rate += 0.01 xrate.save() log.debug(f'rate after: {xrate}') log.info(f'Finished update for: {from_currency} => {to_currency}')
def update_xrates(from_currency, to_currency): log.info("Started update for: %s=>%s" % (from_currency, to_currency)) xrate = XRate.select().where(XRate.from_currency == from_currency, XRate.to_currency == to_currency).first() log.debug("rate before: %s", xrate) xrate.rate += 0.01 xrate.updated = peewee_datetime.datetime.now() xrate.save() log.debug("rate after: %s", xrate) log.info("Finished update for: %s=>%s" % (from_currency, to_currency))
def update_xrates(from_currency, to_currency): log.info(f'Started update for: {from_currency} => {to_currency}') # получение курса из БД xrate = XRate.select().where(XRate.from_currency == from_currency, XRate.to_currency == to_currency).first() log.debug(f'rate before: {xrate}') # получение нового значения от Привата и сохранение его в объект xrate xrate.rate = get_cbr_rate(from_currency) # обновление поля updated xrate.updated = peewee_datetime.datetime.now() xrate.save() log.debug(f'rate after: {xrate}') log.info(f'Finished update for: {from_currency} => {to_currency}')
def _call(self): xrates = XRate.select() return render_template("xrates.html", xrates=xrates)
def update_rate(from_currency, to_currency): xrate = XRate.select().where(XRate.from_currency == from_currency, XRate.to_currency == to_currency).first() module = importlib.import_module(f"api.{xrate.module}") module.Api().update_rate(xrate)