aboutsummaryrefslogtreecommitdiff
path: root/talerbank/app/management/commands
diff options
context:
space:
mode:
authorMarcello Stanisci <marcello.stanisci@inria.fr>2016-04-20 16:00:44 +0200
committerMarcello Stanisci <marcello.stanisci@inria.fr>2016-04-20 16:00:44 +0200
commitd932c5d543446f6d5cbac3b94165641627b61756 (patch)
tree2d91a145385932501bae08cc9f1317945574c244 /talerbank/app/management/commands
parentd7e8c94e88f01395b75b5960cd4ab20bea1db7af (diff)
downloadbank-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.py24
-rw-r--r--talerbank/app/management/commands/sample_donations.py69
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):