Coverage for jutil/management/commands/make_bank_const_dk.py: 0%
46 statements
« prev ^ index » next coverage.py v6.5.0, created at 2022-10-07 16:40 -0500
« prev ^ index » next coverage.py v6.5.0, created at 2022-10-07 16:40 -0500
1import csv
2from copy import copy
3from django.core.management.base import CommandParser
4from jutil.command import SafeCommand
5from jutil.bank_const_dk import DK_BANK_CLEARING_MAP
6from jutil.validators import is_int
9def dk_iban_load_map(filename: str) -> list:
10 """
11 Loads Denmark monetary institution codes in CSV format.
12 :param filename: CSV file name of the BIC definitions.
13 Columns: 4-digit code, bank name, ...
14 :return: list of (code, name)
15 """
16 data_list = []
17 with open(filename, "rt", encoding="utf-8") as fp:
18 for row in csv.reader(fp):
19 if len(row) >= 2 and is_int(row[0]) and row[1]:
20 data_list.append((row[0], row[1]))
21 return data_list
24class Command(SafeCommand):
25 help = "Generates Python file with Denmark bank info as constants"
27 def add_arguments(self, parser: CommandParser):
28 parser.add_argument("--filename", type=str)
29 parser.add_argument("--php", action="store_true")
31 def do(self, *args, **kw): # pylint: disable=too-many-branches
32 new_bank_list = dk_iban_load_map(kw["filename"]) if kw["filename"] else []
34 bank_data = dict(copy(DK_BANK_CLEARING_MAP))
35 for code, name in new_bank_list:
36 if code not in bank_data:
37 bank_data[code] = name
39 if kw["php"]:
40 print("<?php")
41 print("")
42 print("global $DK_BANK_CLEARING_MAP;")
43 print("$DK_BANK_CLEARING_MAP = array(")
44 errors = False
45 for code, name in bank_data.items():
46 print(" '{}' => '{}',".format(code, name))
47 print(");")
48 if errors:
49 print("")
50 print('// TODO: fix errors from above marked with "?"')
51 print("")
52 else:
53 print("DK_BANK_CLEARING_MAP = { # " + str(len(bank_data)))
54 errors = False
55 for code, name in bank_data.items():
56 print(" '{}': '{}',".format(code, name))
57 print("}")
58 if errors:
59 print("")
60 print('# TODO: fix errors from above marked with "?"')
61 print("")