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)
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)
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)