diff options
Diffstat (limited to 'python/Dawn/views.py')
| -rw-r--r-- | python/Dawn/views.py | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/python/Dawn/views.py b/python/Dawn/views.py index 96157bd7..f61e5308 100644 --- a/python/Dawn/views.py +++ b/python/Dawn/views.py @@ -1,5 +1,5 @@ from flask import (request, render_template, redirect, - url_for, send_from_directory, send_file, g) + url_for, send_from_directory, send_file, g, jsonify) from .models import ModelForm, BondDeal, CDSDeal, Counterparties from sqlalchemy.exc import IntegrityError from wtforms.fields import BooleanField @@ -13,6 +13,7 @@ from PyPDF2 import PdfFileMerger from io import BytesIO from Dawn import app import socket +import psycopg2 def cp_choices(): return Counterparties.query.order_by('name').\ @@ -28,6 +29,14 @@ def get_queue(): q = g.queue = redis.Redis(host='debian') return q +def get_db(): + db = getattr(g, '_database', None) + if db is None: + db = g._database = psycopg2.connect(database="serenitasdb", + user="serenitas_user", + host="debian") + return db + class CounterpartyForm(ModelForm): class Meta: model = Counterparties @@ -176,3 +185,21 @@ def edit_counterparty(cpcode): session.commit() return redirect(url_for('list_counterparties')) return render_template('edit_cp.html', form=cp_form, code=cpcode) + +@app.route('/_ajax', methods=['GET']) +def get_bbg_id(): + bbg_id = request.args.get('bbg_id') + _, indextype, _, series, tenor = bbg_id.split() + indextype = indextype[:2] + tenor = tenor[:-1] + 'yr' + series = int(series[1:]) + sqlstr1 = "SELECT * FROM index_redcode(%s::index_type, %s::smallint, %s)" + sqlstr2 = "SELECT maturity, coupon FROM index_maturity WHERE index=%s and series=%s and tenor=%s" + db = get_db() + with db.cursor() as c: + print(indextype, series) + c.execute(sqlstr1, (indextype, series, datetime.datetime(2015,10, 25).date())) + (redcode,) = c.fetchone() + c.execute(sqlstr2, (indextype, series, tenor)) + maturity, coupon = c.fetchone() + return jsonify({'maturity': maturity.strftime('%Y-%m-%d'), 'redcode': redcode, 'coupon': coupon}) |
