aboutsummaryrefslogtreecommitdiffstats
path: root/python/Dawn/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/Dawn/models.py')
-rw-r--r--python/Dawn/models.py85
1 files changed, 46 insertions, 39 deletions
diff --git a/python/Dawn/models.py b/python/Dawn/models.py
index efcd2703..ed5752ad 100644
--- a/python/Dawn/models.py
+++ b/python/Dawn/models.py
@@ -1,52 +1,59 @@
-from sqlalchemy.ext.declarative import declarative_base
-from sqlalchemy import Boolean, Sequence, Column, Integer, String, Date, Float, ForeignKey
+from flask.ext.sqlalchemy import SQLAlchemy
+from flask.ext.wtf import Form
from sqlalchemy.dialects.postgresql import ENUM, OID
from wtforms import FileField, SelectField
+from wtforms_alchemy import model_form_factory
import datetime
-Base = declarative_base()
+db = SQLAlchemy()
-class Counterparties(Base):
+class Counterparties(db.Model):
__tablename__ = 'counterparties'
- code = Column(String(12), primary_key=True)
- name = Column(String)
- city = Column(String)
- state = Column(String(2))
- dtc_number = Column(Integer)
- sales_contact = Column(String)
- sales_email = Column(String)
- sales_phone = Column(String)
- valuation_contact1 = Column(String)
- valuation_email1 = Column(String)
- valuation_contact2 = Column(String)
- valuation_email2 = Column(String)
- valuation_contact3 = Column(String)
- valuation_email3 = Column(String)
- notes = Column(String)
+ code = db.Column(db.String(12), primary_key=True)
+ name = db.Column(db.String)
+ city = db.Column(db.String)
+ state = db.Column(db.String(2))
+ dtc_number = db.Column(db.Integer)
+ sales_contact = db.Column(db.String)
+ sales_email = db.Column(db.String)
+ sales_phone = db.Column(db.String)
+ valuation_contact1 = db.Column(db.String)
+ valuation_email1 = db.Column(db.String)
+ valuation_contact2 = db.Column(db.String)
+ valuation_email2 = db.Column(db.String)
+ valuation_contact3 = db.Column(db.String)
+ valuation_email3 = db.Column(db.String)
+ notes = db.Column(db.String)
BOND_STRAT = ENUM('M_STR_MAV', 'M_STR_SMEZZ', 'CSO_TRANCH',
'M_CLO_BB20', 'M_CLO_AAA', 'M_CLO_BBB', 'M_MTG_IO', 'M_MTG_THRU',
- 'M_MTG_GOOD', 'M_MTG_B4PR', 'M_MTG_RW', name='bond_strat', metadata=Base.metadata)
+ 'M_MTG_GOOD', 'M_MTG_B4PR', 'M_MTG_RW', name='bond_strat')
ASSET_CLASS = ENUM('CSO', 'Subprime', 'CLO', 'Tranches', 'Futures', 'Cash', 'FX', 'Cleared',
- name='asset_class', metadata=Base.metadata)
+ name='asset_class')
-class BondDeal(Base):
+class BondDeal(db.Model):
__tablename__ = 'bonds'
- dealid = Column(String(28), primary_key=True)
- folder = Column(BOND_STRAT, nullable=False)
- custodian = Column(String(12), nullable=False)
- cashaccount = Column(String(10), nullable=False)
- counterparty = Column(String, ForeignKey("counterparties.code"),
+ dealid = db.Column(db.String(28), primary_key=True)
+ folder = db.Column(BOND_STRAT, nullable=False)
+ custodian = db.Column(db.String(12), nullable=False)
+ cashaccount = db.Column(db.String(10), nullable=False)
+ counterparty = db.Column(db.String, db.ForeignKey("counterparties.code"),
info={'choices': [(None, None)]})
- trade_date = Column(Date, nullable = False, default = datetime.date.today)
- settle_date = Column(Date, nullable = False, default = datetime.date.today)
- cusip = Column(String(9))
- isin = Column(String(12))
- description = Column(String(32))
- buysell = Column(Boolean, nullable = False, info={'choices':[(0, 'sell'), (1, 'buy')]})
- faceamount = Column(Float, nullable=False)
- price = Column(Float, nullable=False)
- account = Column(String(10))
- accrued = Column(Float)
- asset_class = Column(ASSET_CLASS)
- ticket = Column(OID, info={'form_field_class': FileField})
+ trade_date = db.Column(db.Date, nullable = False, default = datetime.date.today)
+ settle_date = db.Column(db.Date, nullable = False, default = datetime.date.today)
+ cusip = db.Column(db.String(9))
+ isin = db.Column(db.String(12))
+ description = db.Column(db.String(32))
+ buysell = db.Column(db.Boolean, nullable = False, info={'choices':[(0, 'sell'), (1, 'buy')]})
+ faceamount = db.Column(db.Float, nullable=False)
+ price = db.Column(db.Float, nullable=False)
+ account = db.Column(db.String(10))
+ accrued = db.Column(db.Float)
+ asset_class = db.Column(ASSET_CLASS)
+ ticket = db.Column(OID, info={'form_field_class': FileField})
+
+BaseModelForm = model_form_factory(Form)
+class ModelForm(BaseModelForm):
+ @classmethod
+ def get_session(self):
+ return db.session