diff options
Diffstat (limited to 'python/Dawn')
| -rw-r--r-- | python/Dawn/views.py | 33 |
1 files changed, 14 insertions, 19 deletions
diff --git a/python/Dawn/views.py b/python/Dawn/views.py index d2214604..b749a715 100644 --- a/python/Dawn/views.py +++ b/python/Dawn/views.py @@ -18,7 +18,7 @@ from wtforms.fields import BooleanField from pandas.tseries.offsets import CustomBusinessDay from pandas.tseries.holiday import get_calendar, HolidayCalendarFactory, GoodFriday -from .utils import load_counterparties, bump_rev, simple_serialize +from .utils import bump_rev, simple_serialize from PyPDF2 import PdfFileMerger from io import BytesIO from . import app @@ -185,7 +185,7 @@ def split_direction(g, direction): else: raise ValueError("direction can be one of 'outgoing' or 'incoming'") -def gen_cashflow_deals(form): +def gen_cashflow_deals(form, session): action = form.get("action") to_date = lambda s: datetime.datetime.strptime(s, "%Y-%m-%d") trade_date = form.get("trade_date", None, to_date) @@ -195,28 +195,25 @@ def gen_cashflow_deals(form): if f"{direction}-code-{count}" not in form: break else: - r = [form.get(f"{direction}-{field}-{count}") for field \ - in ["folder", "code", "amount"]] + d = {field: form.get(f"{direction}-{field}-{count}") for field \ + in ["folder", "code", "amount", "currency"]} count += 1 if direction == "outgoing": - r[2] = -float(r[2]) + d['amount'] = - float(d['amount']) elif direction == "incoming": - r[2] = float(r[2]) + d['amount'] = float(d['amount']) else: raise ValueError("direction needs to be 'outgoing' or 'incoming'") - yield CashFlowDeal(trade_date=trade_date, - action=action, - folder=r[0], - code=r[1], - amount=r[2]) + cf = CashFlowDeal(trade_date=trade_date, + action=action, + **d) + session.add(cf); yield cf @app.route('/wires/<int:wire_id>', methods = ['GET', 'POST']) @app.route('/wires/', defaults={'wire_id': None}, methods=['GET', 'POST']) def wire_manage(wire_id): if request.method == 'POST': - for wire in gen_cashflow_deals(request.form): - print(wire) - db.session.add(wire) + wires = list(gen_cashflow_deals(request.form, db.session)) try: db.session.commit() @@ -227,16 +224,14 @@ def wire_manage(wire_id): strategies=CASH_STRAT.enums, currencies=CCY.enums, accounts=account_codes(), - outgoing_wires=split_direction( - gen_cashflow_deals(request.form), "outgoing"), - incoming_wires=split_direction( - gen_cashflow_deals(request.form), "incoming"), + outgoing_wires=split_direction(wires, "outgoing"), + incoming_wires=split_direction(wires, "incoming"), action=request.form.get('action'), trade_date=request.form.get('trade_date')) else: if request.form.get('upload_globeop') == 'y': q = get_queue() - for wire in gen_cashflow_deals(request.form): + for wire in wires: q.rpush('wires', simple_serialize(wire)) return redirect(url_for('list_trades', kind='wire')) |
