diff options
author | Marcello Stanisci <marcello.stanisci@inria.fr> | 2016-04-20 16:00:44 +0200 |
---|---|---|
committer | Marcello Stanisci <marcello.stanisci@inria.fr> | 2016-04-20 16:00:44 +0200 |
commit | d932c5d543446f6d5cbac3b94165641627b61756 (patch) | |
tree | 2d91a145385932501bae08cc9f1317945574c244 /talerbank/app/management/commands | |
parent | d7e8c94e88f01395b75b5960cd4ab20bea1db7af (diff) | |
download | bank-d932c5d543446f6d5cbac3b94165641627b61756.tar.gz bank-d932c5d543446f6d5cbac3b94165641627b61756.tar.bz2 bank-d932c5d543446f6d5cbac3b94165641627b61756.zip |
addressing #4427
Diffstat (limited to 'talerbank/app/management/commands')
-rw-r--r-- | talerbank/app/management/commands/provide_accounts.py | 24 | ||||
-rw-r--r-- | talerbank/app/management/commands/sample_donations.py | 69 |
2 files changed, 48 insertions, 45 deletions
diff --git a/talerbank/app/management/commands/provide_accounts.py b/talerbank/app/management/commands/provide_accounts.py index eedd0b1..9ae7db4 100644 --- a/talerbank/app/management/commands/provide_accounts.py +++ b/talerbank/app/management/commands/provide_accounts.py @@ -18,7 +18,7 @@ import sys import logging from django.contrib.auth.models import User -from django.db.utils import ProgrammingError, DataError +from django.db.utils import ProgrammingError, DataError, OperationalError from django.core.management.base import BaseCommand from ...models import BankAccount from django.conf import settings @@ -30,20 +30,11 @@ def demo_accounts(): for name in settings.TALER_PREDEFINED_ACCOUNTS: try: User.objects.get(username=name) - except ProgrammingError: - logger.error("DB does not exist") - sys.exit(1) except User.DoesNotExist: - try: - a = User.objects.create_user(username=name, password='') - except DataError: - logger.error("Given username exceeded 30 chars, please make it shorter!") - return - is_public = not (name == 'http://mint.test.taler.net' or - name == 'http://mint.demo.taler.net') - b = BankAccount(user=a, + u = User.objects.create_user(username=name, password='') + b = BankAccount(user=u, currency=settings.TALER_CURRENCY, - is_public=is_public) + is_public=True) b.save() logger.info("Creating account '%s' with number %s", name, b.account_no) @@ -51,8 +42,11 @@ def demo_accounts(): def ensure_account(name): try: User.objects.get(username=name) - except ProgrammingError: - logging.error("Please create DB before running the bank") + except (OperationalError, ProgrammingError): + logger.error("likely causes: non existent DB or unmigrated project\n" + "(try 'taler-bank-manage django migrate' in the latter case)", + stack_info=False, + exc_info=True) sys.exit(1) except User.DoesNotExist: user = User.objects.create_user(username=name, password='') diff --git a/talerbank/app/management/commands/sample_donations.py b/talerbank/app/management/commands/sample_donations.py index f3bd79f..0d3f7f1 100644 --- a/talerbank/app/management/commands/sample_donations.py +++ b/talerbank/app/management/commands/sample_donations.py @@ -18,42 +18,51 @@ from random import randint from django.core.management.base import BaseCommand from ...funds import wire_transfer_in_out from django.conf import settings -from django.db.utils import OperationalError +from django.db.utils import OperationalError, ProgrammingError from ...models import BankAccount +import logging +import sys +logger = logging.getLogger(__name__) +public_accounts = [] def sample_donations(): try: public_accounts = BankAccount.objects.filter(is_public=True) - except BankAccount.DoesNotExist: - public_accounts = [] - for account in public_accounts: - for i in range(0, 9): - if account.user.username in settings.TALER_EXPECTS_DONATIONS: - value = randint(1, 100) - try: - # 1st take money from bank and give to exchange - wire_transfer_in_out({'value': value, - 'fraction': 0, - 'currency': settings.TALER_CURRENCY}, - 1, - 2, - "Test withdrawal") - - # 2nd take money from exchange and give to donation receiver - wire_transfer_in_out({'value': value, - 'fraction': 0, - 'currency': settings.TALER_CURRENCY}, - 2, - account.account_no, - "Test donation(s)") - except BankAccount.DoesNotExist: - print("Accounts not found. Run the 'provide_accounts' django management command") - return - except OperationalError: - print("No DB found, please create one beforehand. Try with taler-bank-manage createdb") - return - + if len(public_accounts) is 0: + logger.warning("No public accounts still activated. Run 'taler-bank-manage" + " django provide_accounts' first") + for account in public_accounts: + logger.debug("*") + for i in range(0, 9): + if account.user.username in settings.TALER_EXPECTS_DONATIONS: + value = randint(1, 100) + try: + # 1st take money from bank and give to exchange + wire_transfer_in_out({'value': value, + 'fraction': 0, + 'currency': settings.TALER_CURRENCY}, + 1, + 2, + "Test withdrawal") + + # 2nd take money from exchange and give to donation receiver + wire_transfer_in_out({'value': value, + 'fraction': 0, + 'currency': settings.TALER_CURRENCY}, + 2, + account.account_no, + "Test donation(s)") + except BankAccount.DoesNotExist: + logger.error("(At least) one account is not found. Run " + "'taler-bank-manage django provide_accounts' beforehand") + sys.exit(1) + except (ProgrammingError, OperationalError): + logger.error("likely causes: non existent DB or unmigrated project\n" + "(try 'taler-bank-manage django migrate' in the latter case)", + stack_info=False, + exc_info=True) + sys.exit(1) class Command(BaseCommand): def handle(self, *args, **options): |