Coverage for jbank/management/commands/wsedi_exec.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
1import base64
2import logging
3import pytz
4from django.core.management.base import CommandParser
5from jutil.format import get_media_full_path
6from jutil.command import SafeCommand
7from jbank.helpers import parse_start_and_end_date
8from jbank.models import WsEdiConnection
9from jbank.wsedi import wsedi_execute
10from xml.etree import ElementTree
12logger = logging.getLogger(__name__)
15class Command(SafeCommand):
16 help = """
17 Executes WS-EDI command using direct bank connection.
18 """
20 def add_arguments(self, parser: CommandParser):
21 parser.add_argument("--ws", type=int, default=1)
22 parser.add_argument("--cmd", type=str, default="DownloadFileList")
23 parser.add_argument("--file-reference", type=str)
24 parser.add_argument("--file-type", type=str)
25 parser.add_argument("--start-date", type=str)
26 parser.add_argument("--end-date", type=str)
27 parser.add_argument("--status", type=str)
29 def do(self, *args, **options): # pylint: disable=too-many-locals
30 ws = WsEdiConnection.objects.get(id=options["ws"])
31 assert isinstance(ws, WsEdiConnection)
32 if ws and not ws.enabled:
33 logger.info("WS connection %s not enabled, exiting", ws)
34 return
36 start_date, end_date = parse_start_and_end_date(pytz.timezone("Europe/Helsinki"), **options)
37 cmd = options["cmd"]
38 file_reference = options["file_reference"] or ""
39 file_type = options["file_type"] or ""
40 status = options["status"] or ""
41 response = wsedi_execute(
42 ws,
43 command=cmd,
44 file_reference=file_reference,
45 file_type=file_type,
46 status=status,
47 start_date=start_date,
48 end_date=end_date,
49 verbose=True,
50 )
51 print(response)
52 root_el = ElementTree.fromstring(response)
53 content_el = root_el.find("{http://bxd.fi/xmldata/}Content")
54 if content_el is not None:
55 content_bytes = base64.b64decode(content_el.text)
56 print(content_bytes.decode())
57 if file_reference:
58 full_path = get_media_full_path("downloads/" + file_reference + "." + file_type)
59 with open(full_path, "wb") as fp:
60 fp.write(content_bytes)
61 print(full_path, "written")