diff options
author | Florian Dold <florian.dold@gmail.com> | 2016-04-11 17:57:05 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2016-04-11 17:57:05 +0200 |
commit | 2327735ebef6810c7d14371e611973e432ca75dc (patch) | |
tree | 04504941712c397882f1bdfb36a78770c475c2ed /talerbank/app | |
parent | efe77fd293f2b517d1aa623b4d1ffa884e10739d (diff) | |
download | bank-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.py | 6 | ||||
-rw-r--r-- | talerbank/app/lib.py | 10 | ||||
-rw-r--r-- | talerbank/app/management/commands/basic_accounts.py | 6 | ||||
-rw-r--r-- | talerbank/app/migrations/0001_initial.py | 20 | ||||
-rw-r--r-- | talerbank/app/startup.py | 3 | ||||
-rw-r--r-- | talerbank/app/templates/error.html | 2 |
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" %} |