Update account creation to take in the account ID

We need the account ID to uniquely identify the account when we request
transactions. So now we require the user to input the data. Over time we
may be able to come up with a way to make this less onerous for the user
since, in this case, AFCU actually calculates the account ID from the
user ID.

But we'll get to that as we learn more
This commit is contained in:
Eli Ribble 2016-06-23 08:44:26 -06:00
parent f485f03f0c
commit 6d6112de33
3 changed files with 22 additions and 19 deletions

View File

@ -21,11 +21,13 @@
<label for="name">Name</label> <label for="name">Name</label>
<input id="name" type="text" name="name" class="form-control" placeholder="My OFX account"></input> <input id="name" type="text" name="name" class="form-control" placeholder="My OFX account"></input>
<label for="institution">Institution</label> <label for="institution">Institution</label>
<input id="institution" type="text" name="institution" class="form-control" list="institutions"></input> <input id="institution" type="text" name="institution" class="form-control" list="institutions" placeholder="Start typing..."></input>
<label for="userid">User ID</label> <label for="user_id">User ID</label>
<input id="userid" type="text" name="userid" class="form-control" placeholder="123456"></input> <input id="user_id" type="text" name="user_id" class="form-control" placeholder="123456"></input>
<label for="password">Password</label> <label for="password">Password</label>
<input id="password" type="password" name="password" class="form-control" placeholder="1234"></input> <input id="password" type="password" name="password" class="form-control" placeholder="1234"></input>
<label for="account_id">Account ID</label>
<input id="account_id" type="text" name="account_id" class="form-control" placeholder="123456-0.9:CHK"></input>
<label for="type">Account Type</label> <label for="type">Account Type</label>
<select id="account_type" value="checking" name="account_type" class="form-control"> <select id="account_type" value="checking" name="account_type" class="form-control">
<option value="checking">Checking</option> <option value="checking">Checking</option>

View File

@ -13,12 +13,21 @@ def get_accounts():
@blueprint.route('/account/', methods=['POST']) @blueprint.route('/account/', methods=['POST'])
def post_account(): def post_account():
account_id = flask.request.form.get('account_id')
account_type = flask.request.form.get('account_type') account_type = flask.request.form.get('account_type')
institution = flask.request.form.get('institution') institution = flask.request.form.get('institution')
name = flask.request.form.get('name') name = flask.request.form.get('name')
password = flask.request.form.get('password') password = flask.request.form.get('password')
userid = flask.request.form.get('userid') user_id = flask.request.form.get('user_id')
vanth.platform.ofxaccount.create(flask.session['user_id'], name, account_type, institution, password, userid) vanth.platform.ofxaccount.create({
'owner' : flask.session['user_id'],
'account_id' : account_id,
'institution' : institution,
'name' : name,
'password' : password,
'type' : account_type,
'user_id' : user_id,
})
return flask.redirect('/accounts/') return flask.redirect('/accounts/')

View File

@ -31,22 +31,14 @@ def get(user_id):
'uuid' : result[vanth.tables.OFXAccount.c.uuid], 'uuid' : result[vanth.tables.OFXAccount.c.uuid],
} for result in results] } for result in results]
def create(user_id, name, account_type, institution, password, account_user): def create(values):
engine = chryso.connection.get() engine = chryso.connection.get()
source_name = sqlalchemy.select([ values['source'] = sqlalchemy.select([
vanth.tables.OFXSource.c.uuid vanth.tables.OFXSource.c.uuid
]).where(vanth.tables.OFXSource.c.name == institution) ]).where(vanth.tables.OFXSource.c.name == values.pop('institution'))
_uuid = uuid.uuid4() values['uuid'] = uuid.uuid4()
statement = vanth.tables.OFXAccount.insert().values( # pylint: disable=no-value-for-parameter statement = vanth.tables.OFXAccount.insert().values(**values) # pylint: disable=no-value-for-parameter
uuid = _uuid,
name = name,
user_id = account_user,
password = password,
type = account_type,
source = source_name,
owner = user_id,
)
engine.execute(statement) engine.execute(statement)
return _uuid return values['uuid']