Пример #1
0
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")
Пример #2
0
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()]
Пример #3
0
 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)
Пример #4
0
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()}")
Пример #5
0
    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}")
Пример #6
0
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')
Пример #7
0
    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}')
Пример #8
0
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()}')
Пример #9
0
    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)
Пример #10
0
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}')
Пример #11
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))
Пример #12
0
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}')
Пример #13
0
 def _call(self):
     xrates = XRate.select()
     return render_template("xrates.html", xrates=xrates)
Пример #14
0
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)