Coverage for jbank/management/commands/parse_euribor_rates.py: 0%
21 statements
« prev ^ index » next coverage.py v7.2.2, created at 2023-03-27 13:36 +0700
« prev ^ index » next coverage.py v7.2.2, created at 2023-03-27 13:36 +0700
1import logging
2from datetime import timedelta
3from django.core.management.base import CommandParser
4from django.utils.timezone import now
5from jbank.euribor import fetch_latest_euribor_rates
6from jbank.models import EuriborRate
7from jutil.command import SafeCommand
9logger = logging.getLogger(__name__)
12class Command(SafeCommand):
13 help = "Parses Euribor reference rates published daily by the European Money Markets Institute (EMMI) from suomenpankki.fi feed"
15 def add_arguments(self, parser: CommandParser):
16 parser.add_argument("--commit", action="store_true")
17 parser.add_argument("--verbose", action="store_true")
18 parser.add_argument("--delete-older-than-days", type=int)
20 def do(self, *args, **kwargs): # pylint: disable=too-many-branches,too-many-locals
21 rates = fetch_latest_euribor_rates(commit=kwargs["commit"], verbose=kwargs["verbose"])
22 for rate in rates:
23 print(f"{rate.record_date.isoformat()},{rate.name},{rate.rate} %")
24 if kwargs["delete_older_than_days"]:
25 old = now() - timedelta(days=kwargs["delete_older_than_days"])
26 EuriborRate.objects.all().filter(created__lt=old).delete()