Пример #1
0
def bank_create_with_weboob_module(request, pk):

    w = Weboob()

    if request.method == 'POST':
        form = BankForm(data=request.POST)
        if form.is_valid():
            bank = form.save(commit=False)
            bank.bank_password = make_password(
                form.cleaned_data['bank_password'])
            bank.save()

            w.load_backend(
                bank.module_weboob.name_of_module, bank.name_of_bank, {
                    'login': form.cleaned_data['bank_login'],
                    'password': form.cleaned_data['bank_password']
                })

            # Get list of available account(s) in the bank
            list_of_accounts = list(w.iter_accounts())

            # Get list of transactions coming from bank history
            context = load_transactions(request, w, bank, list_of_accounts)
            return render(request,
                          'ManageGesfi/load_transactions_from_account.html',
                          context)

    else:
        form = BankForm()

    context = {
        'form': form,
        'create': True
        # TODO: ajouter un flag "create with weboob" pour rediriger vers load_transactions (et créer les comptes)
    }
    return render(request, 'banksandaccounts/bank_edit.html', context)
Пример #2
0
def bank_connection_and_load_transactions(request, pk):
    bank = get_object_or_404(Banks, pk=pk)
    w = Weboob()

    # TODO: Vérifier que les champs ne sont pas vide avant de lancer la connexion
    # TODO: si erreur de connexion, alors raise une erreur et revenir vers une autre page ?
    # TODO: affecter un owner_of_account lorsqu'un account est créé

    if request.method == 'POST':
        form = BankConnectionForm(instance=bank, data=request.POST)

        if form.is_valid():
            # TODO: vérifier que le mot de passe est identique à celui stocké en base if any (sous forme cryptée)
            logger.warning(
                '============= bank_connection_and_load_transactions __ bank.module_weboob.name_of_module = :: %s',
                bank.module_weboob.name_of_module)
            wb = w.load_backend(
                bank.module_weboob.name_of_module, bank.name_of_bank, {
                    'login': form.cleaned_data['bank_login'],
                    'password': form.cleaned_data['bank_password']
                })

            # Get list of available account(s) in the bank
            list_of_accounts = list(wb.iter_accounts())

            # Get list of transactions coming from bank history
            context = load_transactions(request, wb, bank, list_of_accounts)
            return render(request,
                          'ManageGesfi/load_transactions_from_account.html',
                          context)

    else:
        form = BankConnectionForm(instance=bank)

    context = {
        'bank': bank,
        'form': form,
    }
    return render(
        request, 'banksandaccounts/bank_connection_and_load_transactions.html',
        context)
Пример #3
0
def update_list_of_managed_banks(request):
    w = Weboob()
    # check_weboob_repositories(w)

    # TODO: Ajouter la liste des modules Banks accessibles dans la base de données
    # TODO: voir si cette fonction ne doit pas faire partie de WeboobModules (models.py). Comparer d'abord si le module existe

    '''
    w.load_backends(CapBank)
    print('get_all_modules_info societegenerale:::: \n {}'.format(
        w.repositories.get_all_modules_info(CapBank)['societegenerale'].description))
    print('\n *************************\n {} \n *************************** \n'.format(list(w.iter_accounts())))

    l = list(w.iter_accounts())
    for account in l:
        # Test if get_account works
        print("\n====================================================================================================")
        print('Account Id: {0} \t\t Account description: {1}'.format(account.id, account.label))
        print("====================================================================================================")
    '''

    listbanks = w.repositories.get_all_modules_info(CapBank)
    # TODO: créer form quand on clique sur banque pour entrer login et password
    amex = w.load_backend('americanexpress', 'American Express', {'login': '', 'password': ''})
    list_accounts = list(amex.iter_accounts())

    logger.warning("=================================================================================================")
    logger.warning("info sur amex : _____/\_______ : %s", amex)
    logger.warning("info sur amex : _____/\_______ : %s", amex.CONFIG)
    logger.warning("info sur amex : _____/\_______ : %s", amex.iter_accounts())
    # logger.info("info sur amex : _____/\_______ : %s", amex.type)
    for account in list_accounts:
        logger.warning("Accounts of AMEX: ...... : %s", account)
    logger.warning("=================================================================================================")

    # db_accounts_list = db_Accounts.objects.all().filter(owner_of_account=request.user)
    db_accounts_list = db_Accounts.objects.all()

    list_of_db_accounts = []

    for key in db_accounts_list:
        list_of_db_accounts.append(key.num_of_account)
    '''
    if amex.id not in list_of_db_accounts:
        new_account = db_Accounts()
        new_account.num_of_account = amex.id
        new_account.name_of_account = amex.label
        new_account.type_int_of_account = amex.type
        # TODO: affecter un user + le type (en texte)
        # new_account.owner_of_account = request.user
        # print('new_account.name_of_account = {}'.format(new_account.name_of_account))
        new_account.save()
    
    
    logger.info("=================================================================================================")
    logger.info("info sur amex : _____/\_______ : %s", amex)
    logger.info("info sur amex : _____/\_______ : %s", amex.id)
    logger.info("info sur amex : _____/\_______ : %s", amex.label)
    logger.info("info sur amex : _____/\_______ : %s", amex.type)
    logger.info("=================================================================================================")
    '''

    # module = w.load_backend("societegenerale", "societegenerale")
    # print('********************* w.load_backend(): {} \n'.format(module))
    # print('********************* w.backends_config.get_backend: {}'.format(w.backends_config.get_backend('societegenerale')))
    # print('w.load_or_install_module("axabanque") : {}'.format(w.load_or_install_module('axabanque')))
    # print('\n *************************\n {} \n *************************** \n'.format(list(w.iter_accounts())))

    # if not w.backends_config.backend_exists('cic'):
    #    w.backends_config.add_backend('cic','cic', {'login': '******', 'password': '******'})

    # print('\n _____#####_____\n iter_backedns : {} \n _____####_____\n'.format(list(w.backends_config.iter_backends())))

    #    print('********************* w.backends_config.get_backend: {}'.format(
    #        w.backends_config.get_backend('axabanque')))

    # acc = next(iter(w.iter_accounts()))
    # bal = acc.balance
    # print('\n ********** \n {}\n **********\n'.format(acc))
    # print('\n ********** \n {}\n **********\n'.format(bal))

    # print("========================================================================================================")
    # print('workdir : {}'.format(w.workdir))
    # print('repositories : {}'.format(w.repositories.modules_dir))
    #  print("========================================================================================================")

    logger.warning("=================================================================================================")
    logger.warning('logger.warning Workdir ==> ==> ==> : %s', w.workdir)
    logger.warning('logger.warning Repositories ==> ==> ==> : %s', w.repositories.modules_dir)
    logger.warning("=================================================================================================")

    list_of_banks = []
    for key, val in listbanks.items():
        # print("Banque key (Dict) : {} \t\t\t ===> \t {}".format(key, val.description))
        data_bank = {}
        data_bank['module'] = key
        data_bank['description'] = val.description
        # print('val de account: {}'.format(val))
        list_of_banks.append(data_bank)
    list_of_banks.sort(key=lambda k: k['module'])

    context = {'list_of_banks': list_of_banks}

    return render(request, 'ManageWeboob/list_of_available_backends.html', context)