diff options
Diffstat (limited to 'python/Dawn/views.py')
| -rw-r--r-- | python/Dawn/views.py | 34 |
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']) |
