aboutsummaryrefslogtreecommitdiffstats
path: root/python/Dawn
diff options
context:
space:
mode:
Diffstat (limited to 'python/Dawn')
-rw-r--r--python/Dawn/views.py46
1 files changed, 44 insertions, 2 deletions
diff --git a/python/Dawn/views.py b/python/Dawn/views.py
index 78333d6f..92bee0e5 100644
--- a/python/Dawn/views.py
+++ b/python/Dawn/views.py
@@ -1,6 +1,6 @@
from flask import (request, render_template, redirect,
url_for, send_from_directory, send_file, g)
-from .models import ModelForm, BondDeal, Counterparties
+from .models import ModelForm, BondDeal, CDSDeal, Counterparties
from sqlalchemy.exc import IntegrityError
from wtforms.fields import BooleanField
import pandas as pd
@@ -8,7 +8,7 @@ from pandas.tseries.offsets import BDay
import os
import datetime
import redis
-from .utils import load_counterparties, load_trades, add_triggers, bump_rev, simple_serialize
+from .utils import load_counterparties, bump_rev, simple_serialize
from PyPDF2 import PdfFileMerger
from io import BytesIO
from Dawn import app
@@ -40,6 +40,13 @@ class BondForm(ModelForm):
exclude = ['dealid', 'lastupdate', #we generate it with a trigger at the server level
'principal_payment', 'accrued_payment']
+class CDSForm(ModelForm):
+ upload_globeop = BooleanField(label="Upload to globeop?")
+ class Meta:
+ model = CDSDeal
+ include_foreign_keys = True
+ exclude = ['dealid', 'lastupdate']
+
@app.route('/trades/<int:tradeid>', methods=['GET', 'POST'])
@app.route('/trades/', defaults={'tradeid': None}, methods=['GET', 'POST'])
def trade_manage(tradeid):
@@ -87,11 +94,46 @@ def trade_manage(tradeid):
return str(bond_form.errors)
return render_template('trade_entry.html', form=bond_form, trade_id=tradeid)
+@app.route('/cdstrades/<int:tradeid>', methods=['GET', 'POST'])
+@app.route('/cdstrades/', defaults={'tradeid': None}, methods=['GET', 'POST'])
+def cds_trade_manage(tradeid):
+ trade = CDSDeal.query.get(tradeid) if tradeid else CDSDeal()
+ if tradeid:
+ cds_form = CDSForm(obj = trade)
+ else:
+ today = pd.datetime.today()
+ tomorrow = today + pd.DateOffset(1)
+ cds_form = CDSForm(trade_date = today.date(),
+ effective_date= tomorrow.date(),
+ upfront_settle_date = today.date() + 3 * BDay())
+ if cds_form.is_submitted():
+ if cds_form.validate():
+ cds_form.populate_obj(trade)
+ session = cds_form.get_session()
+ if not tradeid:
+ session.add(trade)
+ try:
+ session.commit()
+ except IntegrityError as e:
+ app.logger.error(e)
+ finally:
+ if cds_form.upload_globeop.data:
+ q = get_queue()
+ q.rpush('cds_trades', simple_serialize(trade))
+ return redirect(url_for('list_cds_trades'))
+ return render_template('cds_trade_entry.html', form=cds_form, trade_id=tradeid)
+
@app.route('/blotter/')
def list_trades():
trade_list = BondDeal.query.order_by(BondDeal.trade_date.desc(), BondDeal.id.desc())
return render_template('blotter.html', trades=trade_list.all())
+@app.route('/cdsblotter')
+def list_cds_trades():
+ trade_list = CDSDeal.query.order_by(CDSDeal.trade_date.desc(), CDSDeal.id.desc())
+ return render_template('cds_blotter.html', trades=trade_list.all())
+
+
@app.route('/tickets/<int:tradeid>')
def download_ticket(tradeid):
trade = BondDeal.query.get(tradeid)