Hide keyboard shortcuts

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 

7 

8logger = logging.getLogger(__name__) 

9 

10 

11class Command(SafeCommand): 

12 help = """ 

13 Executes WS-PKI command using direct bank connection. 

14 """ 

15 

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) 

21 

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 

31 

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 

37 

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())