From 10f0cd4121c2e920ff18e7c02b8ceefd7d8ccb5d Mon Sep 17 00:00:00 2001 From: Yingtong Li Date: Tue, 16 Jun 2020 12:07:52 +1000 Subject: [PATCH] Implement BSB lookup --- selfserv/settings.example.py | 3 +++ sstreasury/urls.py | 1 + sstreasury/views.py | 18 +++++++++++++++++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/selfserv/settings.example.py b/selfserv/settings.example.py index 4c53afb..bae5801 100644 --- a/selfserv/settings.example.py +++ b/selfserv/settings.example.py @@ -38,6 +38,9 @@ ABA_BANK_CODE = 0 ABA_SRC_BSB = '000-000' ABA_SRC_ACC = '00000000' +# Download from http://bsb.apca.com.au/ +BSB_FILE_PATH = 'sstreasury/BSBDirectoryMay20-290.csv' + # Application definition INSTALLED_APPS = [ diff --git a/sstreasury/urls.py b/sstreasury/urls.py index 629ef12..b70feba 100644 --- a/sstreasury/urls.py +++ b/sstreasury/urls.py @@ -32,5 +32,6 @@ urlpatterns = [ path('claims/edit/', views.claim_edit, name='claim_edit'), path('claims/action/', views.claim_action, name='claim_action'), path('claims/processing', views.claim_processing, name='claim_processing'), + path('bsb_lookup', views.bsb_lookup, name='bsb_lookup'), path('', views.index, name='treasury'), ] diff --git a/sstreasury/views.py b/sstreasury/views.py index 589d719..d3b1d7c 100644 --- a/sstreasury/views.py +++ b/sstreasury/views.py @@ -22,7 +22,7 @@ from django.core.validators import validate_email from django.conf import settings from django.db import transaction from django.db.models import Q -from django.http import HttpResponse +from django.http import HttpResponse, JsonResponse from django.shortcuts import render, redirect from django.urls import reverse from django.utils import timezone @@ -33,6 +33,7 @@ from . import models from . import xero from ssmain.email import Emailer +import csv from datetime import datetime import functools import io @@ -724,3 +725,18 @@ def claim_processing(request): return render(request, 'sstreasury/claim_processing.html', { 'claims': claims }) + +@login_required +def bsb_lookup(request): + bsb = request.GET.get('bsb', '').replace('-', '').replace(' ', '') + if len(bsb) != 6: + return JsonResponse({'result': None}) + return JsonResponse({'result': do_bsb_lookup(bsb[:3] + '-' + bsb[-3:])}) + +def do_bsb_lookup(bsb): + with open(settings.BSB_FILE_PATH, 'r', newline='') as f: + reader = csv.reader(f) + for line in reader: + if line[0] == bsb: + return '{} - {}'.format(line[1], line[2]) + return None