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.py41
1 files changed, 33 insertions, 8 deletions
diff --git a/python/Dawn/views.py b/python/Dawn/views.py
index 5b3b6d9c..9c824bc7 100644
--- a/python/Dawn/views.py
+++ b/python/Dawn/views.py
@@ -30,6 +30,7 @@ from .models import (
SpotDeal,
Counterparties,
Accounts,
+ Termination,
)
from sqlalchemy.exc import IntegrityError
@@ -146,14 +147,15 @@ class SwaptionForm(ModelForm):
class Meta:
model = SwaptionDeal
include_foreign_keys = True
- exclude = [
- "dealid",
- "lastupdate",
- "termination_fee",
- "termination_amount",
- "termination_cp",
- "termination_date",
- ]
+ exclude = ["dealid", "lastupdate"]
+
+
+class TerminationForm(ModelForm):
+ upload_globeop = BooleanField(label="Upload to globeop?")
+
+ class Meta:
+ model = Termination
+ include_foreign_keys = True
class FutureForm(ModelForm):
@@ -410,6 +412,29 @@ def wire_manage(wire_id):
)
+@app.route("/trades/<kind>/<dealid>/terminate", methods=["GET", "POST"])
+def terminate(dealid, kind):
+ termination = Termination(dealid=dealid, termination_date=datetime.date.today())
+ form = TerminationForm(obj=termination)
+ form.termination_cp.choices = form.termination_cp.choices + list(cp_choices(kind))
+ if form.validate_on_submit():
+ form.populate_obj(termination)
+ session = form.get_session()
+ try:
+ session.commit()
+ except IntegrityError as e:
+ app.logger.error(e)
+ session.rollback()
+ else:
+ return redirect(url_for("list_trades", kind=kind))
+ else:
+ return render_template(
+ "termination.html",
+ form=form,
+ action_url=url_for("terminate", dealid=dealid, kind=kind),
+ )
+
+
@app.route("/trades/<kind>/<int:tradeid>", methods=["GET", "POST"])
@app.route("/trades/<kind>/", defaults={"tradeid": None}, methods=["GET", "POST"])
@app.route(