summaryrefslogtreecommitdiff
path: root/talerbank/app/management/commands/add_bank_account.py
blob: 4c4aacff250ad1435274d6618cc1e9a379f9e2d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
##
# This file is part of TALER
# (C) 2014, 2015, 2106 Taler Systems SA
#
# TALER is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 3,
# or (at your option) any later version.
#
# TALER is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with TALER; see the file COPYING.  If not,
# see <http://www.gnu.org/licenses/>
#
# @author Marcello Stanisci
# @author Florian Dold
# @brief Create the basic accounts to make the demo bank work.

import sys
import logging
from django.contrib.auth.models import User
from django.db.utils import ProgrammingError, OperationalError
from django.core.management.base import BaseCommand
from django.conf import settings
from ...models import BankAccount
from ...views import wire_transfer
from taler.util.amount import Amount
import getpass
import uuid

LOGGER = logging.getLogger(__name__)
LOGGER.setLevel(logging.INFO)


class Command(BaseCommand):
    help = "Add bank accounts."

    def add_arguments(self, parser):
        parser.add_argument(
            "accountname", type=str, help="Login name of the new bank account"
        )
        parser.add_argument(
            "--public", action="store_true", help="Make the bank account public"
        )

    ##
    # Django-specific definition to invoke the account creator
    # @a make_account; it iterates over the list of basic accounts
    # (defined in the settings) and invoke the account creator
    # for each one of them.
    def handle(self, *args, **options):
        accountname = options["accountname"]
        BankAccount(
            user=User.objects.create_user(
                username=accountname, password=str(uuid.uuid4())
            ),
            is_public=False,
        ).save()
        print(
            f"Created new bank account {accountname} (password set to random password)"
        )