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