aboutsummaryrefslogtreecommitdiffstats
path: root/python/Dawn/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/Dawn/views.py')
-rw-r--r--python/Dawn/views.py34
1 files changed, 29 insertions, 5 deletions
diff --git a/python/Dawn/views.py b/python/Dawn/views.py
index c427e97c..1be3cb6d 100644
--- a/python/Dawn/views.py
+++ b/python/Dawn/views.py
@@ -99,6 +99,7 @@ class CDSForm(ModelForm):
exclude = ['dealid', 'lastupdate', 'termination_amount',
'termination_cp', 'termination_date']
+
class SwaptionForm(ModelForm):
upload_globeop = BooleanField(label="Upload to globeop?")
@@ -117,6 +118,7 @@ class FutureForm(ModelForm):
include_foreign_keys = True
exclude = ['dealid', 'lastupdate']
+
class CapFloorForm(ModelForm):
upload_globeop = BooleanField(label="Upload to globeop?")
@@ -126,6 +128,7 @@ class CapFloorForm(ModelForm):
exclude = ['dealid', 'lastupdate', 'termination_amount',
'termination_cp', 'termination_date']
+
def get_deal(kind):
if kind == 'cds':
return CDSDeal
@@ -172,7 +175,7 @@ def get_form(trade, kind):
else:
form = Form(trade_date=today.date(),
settle_date=today.date() + 2 * bus_day)
- #add extra empty fields
+ # add extra empty fields
empty_choice = (None, '')
for attr in ['folder', 'buysell', 'asset_class', 'swaption_type']:
try:
@@ -194,8 +197,7 @@ def save_ticket(trade, old_ticket_name):
if old_ticket_name:
new_name = bump_rev(old_ticket_name)
else:
- new_name = "{0} {1}.pdf".format(str(trade.trade_date),
- trade.description)
+ new_name = f"{trade.trade_date} {trade.description}.pdf"
trade.ticket.save(os.path.join(app.config['TICKETS_FOLDER'],
new_name))
trade.ticket = new_name
@@ -203,6 +205,18 @@ def save_ticket(trade, old_ticket_name):
trade.ticket = old_ticket_name
+def save_confirm(trade, old_confirm):
+ d = {'C': 'Cap',
+ 'F': 'Floor'}
+ if trade.trade_confirm:
+ file_name = f"{trade.trade_date} {d[trade.cap_or_floor]}.pdf"
+ trade.trade_confirm.save(os.path.join(app.config['CONFIRMS_FOLDER'],
+ file_name))
+ trade.trade_confirm = file_name
+ else:
+ trade.trade_confirm = old_confirm
+
+
def split_direction(g, direction):
if direction == "outgoing":
return [{"folder": cf.folder, "amount": -cf.amount, "code": cf.code,
@@ -227,7 +241,7 @@ def gen_cashflow_deals(form, session, wire_id=None):
if f"{direction}-code-{count}" not in form:
break
else:
- d .update({field: form.get(f"{direction}-{field}-{count}") for field \
+ d .update({field: form.get(f"{direction}-{field}-{count}") for field
in ["folder", "code", "amount", "currency"]})
count += 1
if direction == "outgoing":
@@ -247,7 +261,7 @@ def gen_cashflow_deals(form, session, wire_id=None):
yield cf
-@app.route('/wires/<int:wire_id>', methods = ['GET', 'POST'])
+@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':
@@ -297,6 +311,8 @@ def trade_manage(tradeid, kind):
form.cp_code.choices = form.cp_code.choices + list(cp_choices(kind))
if kind == 'bond':
old_ticket_name = trade.ticket
+ if kind == 'capfloor':
+ old_confirm = trade.trade_confirm
if form.validate_on_submit():
form.populate_obj(trade)
session = form.get_session()
@@ -304,6 +320,8 @@ def trade_manage(tradeid, kind):
session.add(trade)
if kind == 'bond':
save_ticket(trade, old_ticket_name)
+ if kind == 'capfloor':
+ save_confirm(trade, old_confirm)
try:
session.commit()
except IntegrityError as e:
@@ -349,6 +367,12 @@ def download_ticket(tradeid):
fh.seek(0)
return send_file(fh, mimetype='application/pdf')
+@app.route('/confirms/<int:tradeid>')
+def download_confirm(tradeid):
+ trade = CapFloorDeal.query.get(tradeid)
+ return send_file(os.path.join(app.config['CONFIRMS_FOLDER'], trade.trade_confirm),
+ mimetype='application/pdf')
+
@app.route('/counterparties/<path:instr>', methods=['GET'])
@app.route('/counterparties/', defaults={'instr': None}, methods=['GET'])