gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-bank] branch master updated: Improve wire_transfer_payto CLI tool


From: gnunet
Subject: [taler-bank] branch master updated: Improve wire_transfer_payto CLI tool.
Date: Tue, 17 Nov 2020 16:28:35 +0100

This is an automated email from the git hooks/post-receive script.

ms pushed a commit to branch master
in repository bank.

The following commit(s) were added to refs/heads/master by this push:
     new c27a9c1  Improve wire_transfer_payto CLI tool.
c27a9c1 is described below

commit c27a9c16820a21711d397ec7348ad5e398631f87
Author: MS <ms@taler.net>
AuthorDate: Tue Nov 17 16:27:17 2020 +0100

    Improve wire_transfer_payto CLI tool.
---
 .../app/management/commands/wire_transfer_payto.py | 25 ++++++++++++----------
 talerbank/app/tests.py                             |  8 ++++---
 talerbank/app/views.py                             |  6 +++++-
 3 files changed, 24 insertions(+), 15 deletions(-)

diff --git a/talerbank/app/management/commands/wire_transfer_payto.py 
b/talerbank/app/management/commands/wire_transfer_payto.py
index 9eab068..460235c 100644
--- a/talerbank/app/management/commands/wire_transfer_payto.py
+++ b/talerbank/app/management/commands/wire_transfer_payto.py
@@ -17,15 +17,15 @@
 # <http://www.gnu.org/licenses/>
 #
 # @author Marcello Stanisci
-# @brief CLI utility that issues a wire transfer.
+# @brief CLI utility to make wire transfers.
 
 import sys
 import logging
 import json
 from django.core.management.base import BaseCommand
 from django.contrib.auth import authenticate
-from taler.util.amount import Amount
-from ...views import wire_transfer, User, PaytoParse
+from taler.util.amount import Amount, AmountFormatError
+from ...views import wire_transfer, User, PaytoParse, PaytoFormatError
 from ...models import BankAccount, BankTransaction
 
 LOGGER = logging.getLogger(__name__)
@@ -79,22 +79,25 @@ class Command(BaseCommand):
             sys.exit(1)
         try:
             amount = Amount.parse(options["amount"])
-        except BadFormatAmount:
-            LOGGER.error("Amount's format is wrong: respect C:X.Y.")
+        except AmountFormatError:
+            print("Amount format is wrong: respect C:X.Y.")
             sys.exit(1)
         try:
             parsed_payto = 
PaytoParse(options["payto-credit-account-with-subject"])
-            credit_account_user = 
User.objects.get(username=parsed_payto.account)
+            credit_account_user = 
User.objects.get(username=parsed_payto.target)
             credit_account = credit_account_user.bankaccount
-        except BankAccount.DoesNotExist:
-            LOGGER.error("Credit account does not exist.")
+        except User.DoesNotExist:
+            print("Credit account does not exist.")
             sys.exit(1)
-        if not parsed_payto.subject:
-            print("Please provide 'subject' parameter along the payto URI")
+        except PaytoFormatError as e:
+            print(e)
+            sys.exit(1)
+        if not parsed_payto.message:
+            print("Please provide 'message' parameter along the payto URI")
             sys.exit(1)
         try:
             transaction = wire_transfer(
-                amount, user.bankaccount, credit_account, parsed_payto.subject
+                amount, user.bankaccount, credit_account, parsed_payto.message
             )
             print("Transaction id: " + str(transaction.id))
         except Exception as exc:
diff --git a/talerbank/app/tests.py b/talerbank/app/tests.py
index 86e5998..a3df49d 100644
--- a/talerbank/app/tests.py
+++ b/talerbank/app/tests.py
@@ -34,7 +34,7 @@ from django.contrib.auth.models import User
 from mock import patch, MagicMock
 from .models import BankAccount, BankTransaction, TalerWithdrawOperation
 from . import urls
-from .views import wire_transfer, get_reserve_pub, PaytoParse
+from .views import wire_transfer, get_reserve_pub, PaytoParse, PaytoFormatError
 from taler.util.amount import (
     Amount,
     SignedAmount,
@@ -337,12 +337,14 @@ class ReservePubExtractionTestCase(TestCase):
 
 class PaytoParseTestCase(TestCase):
     def test_payto_wrong_protocol(self):
-        self.assertRaises(Exception, PaytoParse, "http://foo/bar";)
+        self.assertRaises(PaytoFormatError, PaytoParse, "http://foo/bar";)
     def test_payto_with_port_number(self):
         parsed = PaytoParse("payto://iban/localhost:1234/account")
         self.assertEqual(parsed.bank, "localhost:1234")
+    def test_minimal(self):
+        parsed = PaytoParse("payto://x-taler-bank/bank-hostname/Taler")
     def test_payto_malformed(self):
-        self.assertRaises(Exception, PaytoParse, "payto:foo/bar")
+        self.assertRaises(PaytoFormatError, PaytoParse, "payto:foo/bar")
     def test_payto_noamount(self):
         parsed = PaytoParse(
             
"payto://x-taler-bank/bank.int.taler.net/Exchange?message=0T096A11M57GWGG0P6ZM9Z8G5829BFJFH2AN9R5T80FJ931DX7GG"
diff --git a/talerbank/app/views.py b/talerbank/app/views.py
index 1ac0c99..7177d7f 100644
--- a/talerbank/app/views.py
+++ b/talerbank/app/views.py
@@ -99,6 +99,10 @@ def allow_origin_star(view_func):
 
     return wraps(view_func)(_decorator)
 
+class PaytoFormatError(Exception):
+    def __init__(self, msg):
+        super(PaytoFormatError, self).__init__(msg)
+        self.msg = msg
 
 class PaytoParse:
     def __init__(self, payto_uri):
@@ -108,7 +112,7 @@ class PaytoParse:
                 len(path) != 3 or \
                 not obj.netloc or \
                 not re.match("^payto://", payto_uri):
-            raise Exception(f"Bad Payto URI: {payto_uri}")
+            raise PaytoFormatError(f"Bad Payto URI: {payto_uri}")
         self.target = path.pop()
         self.bank = path.pop()
         self.authority = obj.netloc

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]