diff options
Diffstat (limited to 'python/Dawn/models.py')
| -rw-r--r-- | python/Dawn/models.py | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/python/Dawn/models.py b/python/Dawn/models.py index ed5752ad..66db7983 100644 --- a/python/Dawn/models.py +++ b/python/Dawn/models.py @@ -1,12 +1,22 @@ from flask.ext.sqlalchemy import SQLAlchemy -from flask.ext.wtf import Form +from flask_wtf import Form +from flask_wtf.file import FileField from sqlalchemy.dialects.postgresql import ENUM, OID -from wtforms import FileField, SelectField +from sqlalchemy.types import TypeDecorator, LargeBinary +from wtforms import SelectField +from wtforms.validators import Length from wtforms_alchemy import model_form_factory import datetime db = SQLAlchemy() +class MyBinary(TypeDecorator): + impl = LargeBinary + + def process_bind_param(self, value, dialect): + return value.stream.getbuffer() + + class Counterparties(db.Model): __tablename__ = 'counterparties' code = db.Column(db.String(12), primary_key=True) @@ -38,11 +48,11 @@ class BondDeal(db.Model): 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)]}) + info={'choices': [(None, None)]}) 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)) + cusip = db.Column(db.String(9), info={'validators': Length(9,9)}) + isin = db.Column(db.String(12), info={'validator': Length(12, 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) @@ -50,7 +60,7 @@ class BondDeal(db.Model): 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}) + ticket = db.Column(MyBinary, info={'form_field_class': FileField}) BaseModelForm = model_form_factory(Form) class ModelForm(BaseModelForm): |
