summaryrefslogtreecommitdiff
path: root/talerbank/app
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2016-04-11 17:57:05 +0200
committerFlorian Dold <florian.dold@gmail.com>2016-04-11 17:57:05 +0200
commit2327735ebef6810c7d14371e611973e432ca75dc (patch)
tree04504941712c397882f1bdfb36a78770c475c2ed /talerbank/app
parentefe77fd293f2b517d1aa623b4d1ffa884e10739d (diff)
downloadbank-2327735ebef6810c7d14371e611973e432ca75dc.tar.gz
bank-2327735ebef6810c7d14371e611973e432ca75dc.tar.bz2
bank-2327735ebef6810c7d14371e611973e432ca75dc.zip
Better error handling, create required accounts in migrations
Diffstat (limited to 'talerbank/app')
-rw-r--r--talerbank/app/history.py6
-rw-r--r--talerbank/app/lib.py10
-rw-r--r--talerbank/app/management/commands/basic_accounts.py6
-rw-r--r--talerbank/app/migrations/0001_initial.py20
-rw-r--r--talerbank/app/startup.py3
-rw-r--r--talerbank/app/templates/error.html2
6 files changed, 40 insertions, 7 deletions
diff --git a/talerbank/app/history.py b/talerbank/app/history.py
index bfe80be..6418ea2 100644
--- a/talerbank/app/history.py
+++ b/talerbank/app/history.py
@@ -26,6 +26,7 @@ from .lib import (get_logged_user_account,
from .errors import internal_error_handler
from django.shortcuts import (render,
redirect)
+import logging
def extract_history(bank_account):
@@ -55,6 +56,7 @@ def history_process(request):
@check_db
def public_accounts_process(request):
+ logging.info("calling public_accounts_attempt")
return public_accounts_attempt(request)
@@ -66,8 +68,8 @@ def public_accounts_attempt(request):
if not sel_account_name:
return redirect("/public-accounts/?account=Tor")
sel_account = get_bank_account_from_username(sel_account_name)
- if not sel_account:
- return internal_error_handler(request)
+ if sel_account == False:
+ return internal_error_handler(request, "User '%s' does not exist" % (sel_account_name,))
history = extract_history(sel_account)
return render(request,
'public_histories_reloaded.html',
diff --git a/talerbank/app/lib.py b/talerbank/app/lib.py
index bca4ac7..435ec99 100644
--- a/talerbank/app/lib.py
+++ b/talerbank/app/lib.py
@@ -30,6 +30,7 @@ from os.path import split
from django.contrib.auth.models import User
from django.db.utils import (OperationalError,
ProgrammingError)
+import logging
def get(arr, key, default=False):
@@ -110,6 +111,7 @@ def get_bank_account_from_username(username):
user_account = User.objects.get(username=username)
return user_account.bankaccount
except User.DoesNotExist:
+ logging.warn("user '%s' does not exist", username)
return False
@@ -128,19 +130,23 @@ def write_log_file(data, log_file="/tmp/django.log", flag='a'):
def check_db(fn):
- def fake_query(request):
+ def wrapper(request):
+ logging.error("doing check_db")
try:
User.objects.get(username='Bank')
except User.DoesNotExist:
+ logging.error("user does not exist")
return no_bank_account_handler(request)
except ProgrammingError:
+ logging.error("internal error, db has no tables")
return internal_error_handler(request,
"(db available but no tables in it. Run"
" 'taler-bank-manage --definetables')")
except OperationalError:
+ logging.error("db does not exist")
return non_existent_db_handler(request)
return fn(request)
- return fake_query
+ return wrapper
def is_logged(fn):
diff --git a/talerbank/app/management/commands/basic_accounts.py b/talerbank/app/management/commands/basic_accounts.py
index 78435ba..0d06aab 100644
--- a/talerbank/app/management/commands/basic_accounts.py
+++ b/talerbank/app/management/commands/basic_accounts.py
@@ -21,6 +21,12 @@ from django.db.utils import OperationalError
from ...startup import basic_accounts
+"""
+Create bank and exchange accounts, which are
+necessary for the bank to work correctly.
+"""
+
+
class Command(BaseCommand):
def handle(self, *args, **options):
basic_accounts()
diff --git a/talerbank/app/migrations/0001_initial.py b/talerbank/app/migrations/0001_initial.py
index d92797c..a98a244 100644
--- a/talerbank/app/migrations/0001_initial.py
+++ b/talerbank/app/migrations/0001_initial.py
@@ -1,10 +1,27 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.4 on 2016-04-08 14:17
from __future__ import unicode_literals
-
+import logging
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
+from django.contrib.auth.models import User
+from .models import BankAccount
+
+
+def basic_accounts(apps, schema_editor):
+ bank = User.objects.create_user(username='Bank', password='')
+ exchange = User.objects.create_user(username='Exchange', password='')
+ bank_ba = BankAccount(user=bank,
+ currency=get_currency(None),
+ is_public=True)
+ bank_ba.save()
+ logging.info("Creating '" + bank_ba.user.username + "' account, with number " + str(bank_ba.account_no) + "\n")
+ exchange_ba = BankAccount(user=exchange,
+ currency=get_currency(None),
+ is_public=True)
+ exchange_ba.save()
+ logging.info("Creating '" + exchange_ba.user.username + "' account, with number " + str(exchange_ba.account_no) + "\n")
class Migration(migrations.Migration):
@@ -39,4 +56,5 @@ class Migration(migrations.Migration):
('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='app.BankAccount')),
],
),
+ migrations.RunPython(basic_accounts),
]
diff --git a/talerbank/app/startup.py b/talerbank/app/startup.py
index 44fc2a7..3583b12 100644
--- a/talerbank/app/startup.py
+++ b/talerbank/app/startup.py
@@ -22,6 +22,7 @@ from django.contrib.auth.models import User
from django.db.utils import OperationalError
from .lib import get_currency
import sys
+import logging
# Creates basic accounts (bank's and exchange's) if the user didn't manually
@@ -29,7 +30,7 @@ def basic_accounts():
accepted_options = ['--definetables', '--preaccounts', '--bareserver', '--sampledata']
try:
if sys.argv[1] not in accepted_options:
- print("skipping basic_accounts() check")
+ logging.warn("skipping basic_accounts() check")
return
except IndexError:
print("Got IndexError, unmanaged..")
diff --git a/talerbank/app/templates/error.html b/talerbank/app/templates/error.html
index 1878583..adda120 100644
--- a/talerbank/app/templates/error.html
+++ b/talerbank/app/templates/error.html
@@ -64,7 +64,7 @@
{% if type = "wrong_pin" %}
Return to your <a href="/profile">profile page</a>
{% elif type = "internal_error" %}
- Resource unavailable {{ hint }}
+ Internal error: {{ hint }}
{% elif type = "non_supported_method" %}
This bank supports TEST wire method only
{% elif type = "exchange_unknown" %}