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