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.py22
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):