Coverage for jbank/management/commands/wspki_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 logging
2from django.core.management.base import CommandParser
3from jutil.command import SafeCommand
4from jbank.models import WsEdiConnection, WsEdiSoapCall, PayoutParty
5from jbank.wspki import wspki_execute, process_wspki_response
6from jutil.format import format_xml_bytes
8logger = logging.getLogger(__name__)
11class Command(SafeCommand):
12 help = """
13 Executes WS-PKI command using direct bank connection.
14 """
16 def add_arguments(self, parser: CommandParser):
17 parser.add_argument("--ws", type=int, default=1)
18 parser.add_argument("--cmd", type=str, required=True)
19 parser.add_argument("--payout-party-id", type=int, required=True)
20 parser.add_argument("--process-response", type=int)
22 def do(self, *args, **options):
23 if options["process_response"]:
24 soap_call = WsEdiSoapCall.objects.get(id=options["process_response"])
25 assert isinstance(soap_call, WsEdiSoapCall)
26 if not soap_call.debug_response_full_path:
27 raise Exception("SOAP call response not available")
28 content = open(soap_call.debug_response_full_path, "rb").read()
29 process_wspki_response(content, soap_call)
30 return
32 ws = WsEdiConnection.objects.get(id=options["ws"])
33 assert isinstance(ws, WsEdiConnection)
34 if ws and not ws.enabled:
35 logger.info("WS connection %s not enabled, exiting", ws)
36 return
38 cmd = options["cmd"]
39 payout_party_id = options["payout_party_id"]
40 payout_party = PayoutParty.objects.get(id=payout_party_id)
41 assert isinstance(payout_party, PayoutParty)
42 response = wspki_execute(ws, payout_party=payout_party, command=cmd, verbose=True)
43 print(format_xml_bytes(response).decode())