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_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 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_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 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 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 _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_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 test_privat_class_mock(self, PrivatMock): PrivatMock().get_rates.return_value = get_privat_response() main.update_from_privat_api() rate = XRate.get_or_none(from_currency="USD", to_currency="UAH") self.assertIsNotNone(rate) self.assertEqual(rate.rate, 30) self.assertTrue(PrivatMock.called)
def _test_privat_timeout(self): # self.assertRaises(requests.exceptions.ReadTimeout, main.update_from_privat_api) main.update_from_privat_api() for from_currency, to_currency in (("USD", "UAH"), ("RUR", "UAH"), ("EUR", "UAH")): rate = XRate.get_or_none(from_currency=from_currency, to_currency=to_currency) self.assertIsNotNone(rate) self.assertNotEqual(rate.rate, 1.0)
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_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 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, from_currency, to_currency): if request.method == "GET": return render_template('rate_edit.html', from_currency=from_currency, to_currency=to_currency) print(request.form) if "new_rate" not in request.form: raise Exception("new_rate parametr in request") if not request.form["new_rate"]: raise Exception("new_rate must be not expty") upd_count = (XRate.update({XRate.rate: float(request.form["new_rate"]), XRate.updated: datetime.now()}) .where(XRate.from_currency == from_currency, XRate.to_currency == to_currency).execute()) print("upd_count: ", upd_count) return redirect(url_for('view_rates'))
def _call(self, from_currency, to_currency): if self.request.method == 'GET': return render_template('rate_edit.html', from_currency=from_currency, to_currency=to_currency) print(request.form) if 'new_rate' not in request.form: raise Exception('new_rate parameter is required') if not request.form: raise Exception('new_rate must be not empty') upd_count = (XRate.update({XRate.rate: float(request.form['new_rate']), XRate.updated: datetime.now()}) .where(XRate.from_currency == from_currency, XRate.to_currency == to_currency).execute()) print('upd_count', upd_count) return redirect(url_for('view_rates'))
def _call(self): xrates = XRate.select() return render_template("xrates.html", xrates=xrates)
def setUp(self): XRate.drop_table() XRate.create_table() XRate.create(from_currency=840, to_currency=980, rate=1, module="privat_api") XRate.create(from_currency=840, to_currency=643, rate=1, module="cbr_api") XRate.create(from_currency=1000, to_currency=840, rate=1, module="privat_api") XRate.create(from_currency=1000, to_currency=980, rate=1, module="cryptonator_api") XRate.create(from_currency=1000, to_currency=643, rate=1, module="cryptonator_api") for m in (ApiLog, ErrorLog): m.create_table()
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)