Coverage for jutil/management/commands/make_bank_const_dk.py : 0%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1# pylint: disable=too-many-branches
2import csv
3from copy import copy
4from django.core.management.base import CommandParser
5from jutil.command import SafeCommand
6from jutil.bank_const_dk import DK_BANK_CLEARING_MAP
9def is_int(x) -> bool:
10 try:
11 int(x)
12 return True
13 except Exception:
14 return False
17def dk_iban_load_map(filename: str) -> list:
18 """
19 Loads Denmark monetary institution codes in CSV format.
20 :param filename: CSV file name of the BIC definitions.
21 Columns: 4-digit code, bank name, ...
22 :return: list of (code, name)
23 """
24 data_list = []
25 with open(filename) as fp:
26 for row in csv.reader(fp):
27 if len(row) >= 2 and is_int(row[0]) and row[1]:
28 data_list.append((row[0], row[1]))
29 return data_list
32class Command(SafeCommand):
33 help = 'Generates Python file with Denmark bank info as constants'
35 def add_arguments(self, parser: CommandParser):
36 parser.add_argument('--filename', type=str)
37 parser.add_argument('--php', action='store_true')
39 def do(self, *args, **kw):
40 new_bank_list = dk_iban_load_map(kw['filename']) if kw['filename'] else []
42 bank_data = dict(copy(DK_BANK_CLEARING_MAP))
43 for code, name in new_bank_list:
44 if code not in bank_data:
45 bank_data[code] = name
47 if kw['php']:
48 print('<?php')
49 print('')
50 print('global $DK_BANK_CLEARING_MAP;')
51 print('$DK_BANK_CLEARING_MAP = array(')
52 errors = False
53 for code, name in bank_data.items():
54 print(" '{}' => '{}',".format(code, name))
55 print(');')
56 if errors:
57 print('')
58 print('// TODO: fix errors from above marked with "?"')
59 print('')
60 else:
61 print('DK_BANK_CLEARING_MAP = { # ' + str(len(bank_data)))
62 errors = False
63 for code, name in bank_data.items():
64 print(" '{}': '{}',".format(code, name))
65 print('}')
66 if errors:
67 print('')
68 print('# TODO: fix errors from above marked with "?"')
69 print('')