diff options
Diffstat (limited to 'python/Dawn')
| -rw-r--r-- | python/Dawn/models.py | 8 | ||||
| -rw-r--r-- | python/Dawn/views.py | 14 |
2 files changed, 19 insertions, 3 deletions
diff --git a/python/Dawn/models.py b/python/Dawn/models.py index a80feae2..f650732e 100644 --- a/python/Dawn/models.py +++ b/python/Dawn/models.py @@ -139,8 +139,11 @@ class CDSDeal(db.Model): lastupdate = db.Column(db.DateTime, server_default=db.func.now(), onupdate=db.func.now()) action = db.Column(ACTION) folder = db.Column(CDS_STRAT, nullable=False) - custodian = db.Column(db.String(12), default='SGFCM', nullable=False) - cashaccount = db.Column(db.String(10), default='SGNSCLMASW', nullable=False) + account_code = db.Column(db.String(5), db.ForeignKey('accounts.code'), + info={'choices': [(None,'')], + 'label': 'fcm_account'}, nullable=False) + custodian = db.Column(db.String(12), default='NONE', nullable=False) + cashaccount = db.Column(db.String(10), default='V0NSCLMFCM', nullable=False) cp_code = db.Column(db.String(12), db.ForeignKey('counterparties.code'), info={'choices': [(None, '')], 'label': 'counterparty'}, nullable=False) @@ -175,6 +178,7 @@ class CDSDeal(db.Model): 'label': 'termination_counterparty'}) counterparty = db.relationship(Counterparties, foreign_keys=[cp_code]) termination_counterparty = db.relationship(Counterparties, foreign_keys=[termination_cp]) + fcm_account = db.relationship(Accounts, foreign_keys=[account_code]) __table_args__ = (db.CheckConstraint("swap_type!='CD_INDEX_TRANCHE' or " \ "(attach is not NULL and detach is not NULL AND " \ "clearing_facility is NULL)"),) diff --git a/python/Dawn/views.py b/python/Dawn/views.py index 90c807ef..dcc0e195 100644 --- a/python/Dawn/views.py +++ b/python/Dawn/views.py @@ -46,6 +46,11 @@ def cp_choices(kind='bond'): def account_codes(): return Accounts.query.order_by('code').with_entities(Accounts.code, Accounts.name) +def fcm_accounts(): + return (Accounts.query. + order_by('code'). + filter(Accounts.name.ilike('%FCM%')). + with_entities(Accounts.code, Accounts.name)) def get_queue(): q = getattr(g, 'queue', None) @@ -97,7 +102,7 @@ class CDSForm(ModelForm): model = CDSDeal include_foreign_keys = True exclude = ['dealid', 'lastupdate', 'termination_amount', - 'termination_cp', 'termination_date'] + 'termination_cp', 'termination_date', 'custodian', 'cashaccount'] class SwaptionForm(ModelForm): @@ -172,6 +177,8 @@ def get_form(trade, kind): form = Form(trade_date=today.date(), effective_date=tomorrow.date(), upfront_settle_date=today.date() + 3 * bus_day) + if kind == 'cds': + form.account_code.choices = fcm_accounts() else: form = Form(trade_date=today.date(), settle_date=today.date() + 2 * bus_day) @@ -309,12 +316,14 @@ def trade_manage(tradeid, kind): form = _get_form(kind)() form.cp_code.choices = form.cp_code.choices + list(cp_choices(kind)) + form.account_code.choices = list(fcm_accounts()) 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) + trade.cashaccount = trade.fcm_account.cash_account session = form.get_session() if not tradeid: session.add(trade) @@ -336,8 +345,11 @@ def trade_manage(tradeid, kind): q.rpush(f'{kind}_trades', simple_serialize(trade)) return redirect(url_for('list_trades', kind=kind)) else: + if form.errors: + app.logger.error(form.errors) form = get_form(trade, kind) form.cp_code.choices = form.cp_code.choices + list(cp_choices(kind)) + form.account_code.choices = list(fcm_accounts()) return render_template('trade_entry.html', form=form, action_url=url_for('trade_manage', tradeid=tradeid, kind=kind)) |
