aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/Dawn/views.py33
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'))