class UniqueRecordTwo(Base, DefaultMixin): __tablename__ = 'sabwp_unique_records_two' name = sa.Column(sa.Unicode(255), nullable=False, unique=True) email = sa.Column(sa.Unicode(255), nullable=False, unique=True) val.validates_constraints()
class CommodityType(db.Model, ValidationMixin): # auto keys id = db.Column(db.Integer, primary_key=True) utc_created = db.Column(db.DateTime, nullable=False, default=dt.utcnow()) utc_updated = db.Column(db.DateTime, nullable=False, default=dt.utcnow(), onupdate=dt.utcnow()) # foreign keys group_id = db.Column(db.Integer, db.ForeignKey('commodity_group.id', onupdate="CASCADE", ondelete="CASCADE"), nullable=False) group = db.relationship('CommodityGroup', backref=backref('types', cascade='all, delete'), lazy='joined') # other keys name = db.Column(db.String(64), nullable=False, unique=True) # validation val.validates_constraints() def __repr__(self): return ('<CommodityType(%r)>' % self.name)
class Person(db.Model, ValidationMixin): # auto keys id = db.Column(db.Integer, primary_key=True) utc_created = db.Column(db.DateTime, nullable=False, default=dt.utcnow()) utc_updated = db.Column( db.DateTime, nullable=False, default=dt.utcnow(), onupdate=dt.utcnow()) # foreign keys currency_id = db.Column( db.Integer, db.ForeignKey( 'commodity.id', onupdate="CASCADE", ondelete="CASCADE"), nullable=False) currency = db.relationship( 'Commodity', lazy='joined', backref=backref('people', cascade='all, delete')) # other keys first_name = db.Column(db.Unicode(64), nullable=False) last_name = db.Column(db.Unicode(64), nullable=False) email = db.Column(db.String(64), unique=True, nullable=False) phone = db.Column(db.String(16)) birth_date = db.Column(db.Date) monthly_income = db.Column(db.Float) monthly_expenses = db.Column(db.Float) marginal_tax_rate = db.Column(db.Float) # validation val.validates_email('email') val.validates_constraints() def __repr__(self): return ('<Exchange(%r, %r)>' % (self.name, self.email)) def __str__(self): return ('%s: %s' % (self.name, self.email))
class Contribution(db.Model, ValidationMixin): # auto keys id = db.Column(db.Integer, primary_key=True) utc_created = db.Column(db.DateTime, nullable=False, default=dt.utcnow()) utc_updated = db.Column( db.DateTime, nullable=False, default=dt.utcnow(), onupdate=dt.utcnow()) # foreign keys account_id = db.Column( db.Integer, db.ForeignKey( 'account.id', onupdate="CASCADE", ondelete="CASCADE"), nullable=False) account = db.relationship( 'Account', lazy='joined', backref=backref('contributions', cascade='all, delete')) # other keys amount = db.Column(db.Float, nullable=False) date = db.Column(db.Date, nullable=False) # validation val.validates_constraints() def __repr__(self): return ('<Contribution(%r, %r)>' % (self.account, self.amount)) def __str__(self): return ('%s: %s' % (self.account, self.amount))
class NumericType(Base, ValidationMixin): __tablename__ = 'NumericType' id = sa.Column(sa.Integer, primary_key=True) fld = sa.Column(sa.Numeric) fld2 = sa.Column(sa.Float) val.validates_constraints()
class Age(db.Model, ValidationMixin): # auto keys utc_created = db.Column(db.DateTime, nullable=False, default=dt.utcnow()) utc_updated = db.Column(db.DateTime, nullable=False, default=dt.utcnow(), onupdate=dt.utcnow()) # other keys dataset_id = db.Column(db.String(128), primary_key=True) dataset_name = db.Column(db.String(128), nullable=False) last_updated = db.Column(db.DateTime, nullable=False) needs_update = db.Column(db.Boolean, nullable=False) status = db.Column(db.String(32), nullable=False) age = db.Column(db.Integer, nullable=False) frequency = db.Column(db.Integer, nullable=False) frequency_category = db.Column(db.String(32), nullable=False) dataset_title = db.Column(db.String(128), nullable=False) downloads = db.Column(db.Integer, nullable=False) # validation val.validates_constraints() def __repr__(self): return '<Age(%r)>' % self.dataset_name
class Company(db.Model, ValidationMixin): # auto keys id = db.Column(db.Integer, primary_key=True) utc_created = db.Column(db.DateTime, nullable=False, default=dt.utcnow()) utc_updated = db.Column( db.DateTime, nullable=False, default=dt.utcnow(), onupdate=dt.utcnow()) # other keys name = db.Column(db.String(64), unique=True, nullable=False) website = db.Column(db.String(64), unique=True, nullable=False) phone = db.Column(db.String(16)) address = db.Column(db.String(64)) city = db.Column(db.String(16)) state = db.Column(db.String(2)) zip = db.Column(db.String(10)) # validation val.validates_url('website') val.validates_constraints() def __repr__(self): return ('<Exchange(%r, %r)>' % (self.name, self.email)) def __str__(self): return ('%s: %s' % (self.name, self.email))
class IntegerType(Base, ValidationMixin): __tablename__ = 'IntegerType' id = sa.Column(sa.Integer, primary_key=True) fld = sa.Column(sa.Integer) fld2 = sa.Column(sa.SmallInteger) fld3 = sa.Column(sa.BigInteger) val.validates_constraints()
class Widget(Base, DefaultMixin): __tablename__ = 'basebwa_ta_widgets' widget_type = sa.Column(sa.Unicode(255), nullable=False) color = sa.Column(sa.Unicode(255), nullable=False) quantity = sa.Column(sa.Integer, nullable=False) val.validates_constraints()
class Family(Base, ValidationMixin): __tablename__ = 'families' id = sa.Column(sa.Integer, primary_key=True) name = sa.Column(sa.Unicode(75), nullable=False, unique=True) reg_num = sa.Column(sa.Integer, nullable=False, unique=True) val.validates_required('name') val.validates_constraints()
class Order(Base, ValidationMixin): __tablename__ = 'orders' id = sa.Column(sa.Integer, primary_key=True) customer_id = sa.Column(sa.Integer, sa.ForeignKey(Customer.id), nullable=False) createdts = sa.Column(sa.DateTime, nullable=False, default=datetime.now, server_default=sasql.text('CURRENT_TIMESTAMP')) note = sa.Column(sa.Text) val.validates_constraints()
class Order2(Base, ValidationMixin): __tablename__ = 'orders2' id = sa.Column(sa.Integer, primary_key=True) customer_id = sa.Column(sa.Integer, sa.ForeignKey(Customer.id)) createdts = sa.Column(sa.DateTime, nullable=False, server_default=sasql.text('CURRENT_TIMESTAMP')) val.validates_constraints() val.validates_required('customer_id', sav_event='before_exec')
class Event(db.Model, ValidationMixin): # table constraints __table_args__ = (db.UniqueConstraint('commodity_id', 'date', 'type_id', 'currency_id'), {}) # auto keys id = db.Column(db.Integer, primary_key=True) utc_created = db.Column(db.DateTime, nullable=False, default=dt.utcnow()) utc_updated = db.Column(db.DateTime, nullable=False, default=dt.utcnow(), onupdate=dt.utcnow()) # foreign keys commodity_id = db.Column(db.Integer, db.ForeignKey('commodity.id'), nullable=False) commodity = db.relationship('Commodity', backref=backref('commodity_events', cascade='all, delete'), lazy='joined', primaryjoin='Commodity.id==Event.commodity_id') currency_id = db.Column(db.Integer, db.ForeignKey('commodity.id'), nullable=False) currency = db.relationship('Commodity', backref=backref('currency_events', cascade='all, delete'), lazy='joined', primaryjoin='Commodity.id==Event.currency_id') type_id = db.Column(db.Integer, db.ForeignKey('event_type.id'), nullable=False) type = db.relationship('EventType', backref=backref('events', cascade='all, delete'), lazy='joined') # other keys value = db.Column(db.Float, nullable=False) date = db.Column(db.DateTime, nullable=False, default=d.today()) # validation val.validates_constraints() def __repr__(self): return ('<Event(%r, %r, %r, %r)>' % (self.commodity_id, self.currency_id, self.value, self.date))
class Commodity(db.Model, ValidationMixin): # auto keys id = db.Column(db.Integer, primary_key=True) utc_created = db.Column(db.DateTime, nullable=False, default=dt.utcnow()) utc_updated = db.Column(db.DateTime, nullable=False, default=dt.utcnow(), onupdate=dt.utcnow()) # foreign keys type_id = db.Column(db.Integer, db.ForeignKey('commodity_type.id', onupdate="CASCADE", ondelete="CASCADE"), nullable=False) type = db.relationship('CommodityType', backref=backref('commodities', cascade='all, delete'), lazy='joined') data_source_id = db.Column(db.Integer, db.ForeignKey('data_source.id', onupdate="CASCADE", ondelete="CASCADE"), nullable=False) data_source = db.relationship('DataSource', backref=backref('commodities', cascade='all, delete'), lazy='joined') exchange_id = db.Column(db.Integer, db.ForeignKey('exchange.id'), nullable=False) exchange = db.relationship('Exchange', backref=backref('commodities', cascade='all, delete'), lazy='joined') # other keys # cusip = db.Column(db.String(16), unique=True) symbol = db.Column(db.String(12), unique=True, nullable=False) name = db.Column(db.String(64), nullable=False, unique=True) # validation val.validates_constraints() def __repr__(self): return ('<Commodity(%r, %r)>' % (self.symbol, self.name))
class Permission(Base, DefaultMixin): __tablename__ = 'auth_permissions' name = Column(Unicode(250), nullable=False, index=True, unique=True) description = Column(Unicode(250)) val.validates_constraints() validates_unique('name') def __repr__(self): return '<Permission: "%s">' % self.name @classmethod def testing_create(cls): return cls.add(name=randchars())
class Todo(db.Model): id = db.Column(db.Integer, primary_key=True) utc_created = db.Column(db.DateTime, nullable=False, default=dt.utcnow) utc_updated = db.Column(db.DateTime, nullable=False, default=dt.utcnow, onupdate=dt.utcnow) completed = db.Column(db.Boolean, default=False, nullable=False) title = db.Column(db.String(), nullable=False, index=True) validates_constraints() def __repr__(self): completed = 'completed' if self.completed else 'not completed' return ('<Todo: "{}" ({})>'.format(self.title, completed))
class SomeObj(Base, ValidationMixin): __tablename__ = 'some_objs' id = sa.Column(sa.Integer, primary_key=True) minlen = sa.Column(sa.String(25)) ipaddr = sa.Column(sa.String(15)) url = sa.Column(sa.String(50)) prec1 = sa.Column(sa.Numeric(10, 2)) prec2 = sa.Column(sa.Numeric(5, 0)) prec3 = sa.Column(sa.Numeric(5, 4)) val.validates_constraints() val.validates_minlen('minlen', 20) val.validates_ipaddr('ipaddr') val.validates_url('url')
class CommodityGroup(db.Model, ValidationMixin): # auto keys id = db.Column(db.Integer, primary_key=True) utc_created = db.Column(db.DateTime, nullable=False, default=dt.utcnow()) utc_updated = db.Column(db.DateTime, nullable=False, default=dt.utcnow(), onupdate=dt.utcnow()) # other keys name = db.Column(db.String(64), nullable=False, unique=True) # validation val.validates_constraints() def __repr__(self): return ('<CommodityGroup(%r)>' % self.name)
class Exchange(db.Model, ValidationMixin): # auto keys id = db.Column(db.Integer, primary_key=True) utc_created = db.Column(db.DateTime, nullable=False, default=dt.utcnow()) utc_updated = db.Column(db.DateTime, nullable=False, default=dt.utcnow(), onupdate=dt.utcnow()) # other keys symbol = db.Column(db.String(12), unique=True, nullable=False) name = db.Column(db.String(64), nullable=False, unique=True) # validation val.validates_constraints() def __repr__(self): return ('<Exchange(%r, %r)>' % (self.symbol, self.name))
class AccountType(db.Model, ValidationMixin): # auto keys id = db.Column(db.Integer, primary_key=True) utc_created = db.Column(db.DateTime, nullable=False, default=dt.utcnow()) utc_updated = db.Column( db.DateTime, nullable=False, default=dt.utcnow(), onupdate=dt.utcnow()) # other keys name = db.Column(db.String(64), unique=True, nullable=False) contribution_limit = db.Column(db.Float) # validation val.validates_constraints() def __repr__(self): return ('<AccountType(%r)>' % self.name) def __str__(self): return ('%s' % self.name)
class Holding(db.Model, ValidationMixin): # constraints __table_args__ = (db.UniqueConstraint('account_id', 'commodity_id'), {}) # auto keys id = db.Column(db.Integer, primary_key=True) utc_created = db.Column(db.DateTime, nullable=False, default=dt.utcnow()) utc_updated = db.Column( db.DateTime, nullable=False, default=dt.utcnow(), onupdate=dt.utcnow()) # foreign keys account_id = db.Column( db.Integer, db.ForeignKey( 'account.id', onupdate="CASCADE", ondelete="CASCADE"), nullable=False) account = db.relationship( 'Account', lazy='joined', backref=backref('holdings', cascade='all, delete')) commodity_id = db.Column( db.Integer, db.ForeignKey( 'commodity.id', onupdate="CASCADE", ondelete="CASCADE"), nullable=False) commodity = db.relationship( 'Commodity', lazy='joined', backref=backref('holdings', cascade='all, delete')) # other keys description = db.Column(db.String(256)) # validation val.validates_constraints() def __repr__(self): return ('<Holding(%r, %r)>' % (self.account_id, self.commodity_id)) def __str__(self): return ('%s: %s' % (self.account, self.commodity))
class Transaction(db.Model, ValidationMixin): # auto keys id = db.Column(db.Integer, primary_key=True) utc_created = db.Column(db.DateTime, nullable=False, default=dt.utcnow()) utc_updated = db.Column( db.DateTime, nullable=False, default=dt.utcnow(), onupdate=dt.utcnow()) # foreign keys type_id = db.Column( db.Integer, db.ForeignKey( 'trxn_type.id', onupdate="CASCADE", ondelete="CASCADE"), nullable=False) type = db.relationship( 'TrxnType', lazy='joined', backref=backref('transactions', cascade='all, delete')) holding_id = db.Column( db.Integer, db.ForeignKey( 'holding.id', onupdate="CASCADE", ondelete="CASCADE"), nullable=False) holding = db.relationship( 'Holding', lazy='joined', backref=backref('transactions', cascade='all, delete')) # other keys shares = db.Column(db.Float, nullable=False) price = db.Column(db.Float, nullable=False) date = db.Column(db.DateTime, nullable=False, default=d.today()) commissionable = db.Column(db.Boolean, nullable=False, default=True) # validation val.validates_constraints() def __repr__(self): return ('<Holding(%r, %r)>' % (self.type_id, self.holding_id)) def __str__(self): return ('%s: %s' % (self.type, self.holding))
class Person(Base, ValidationMixin): __tablename__ = 'people' id = sa.Column(sa.Integer, primary_key=True) createdts = sa.Column(sa.DateTime, nullable=False, server_default=sasql.text('CURRENT_TIMESTAMP')) updatedts = sa.Column(sa.DateTime, onupdate=datetime.now) name_first = sa.Column(sa.Unicode(75), nullable=False) name_last = sa.Column(sa.Unicode(75), nullable=False) family_role = sa.Column(sa.Unicode(20), nullable=False) nullable_but_required = sa.Column(sa.Unicode(5)) ROLE_CHOICES = ( ('father', 'Father'), ('mother', 'Mother'), ('child', 'Child'), ) val.validates_constraints(exclude='createdts') val.validates_presence_of('nullable_but_required') val.validates_choices('family_role', ROLE_CHOICES) @before_flush def alter_name(self): if self.name_first == u'randy': self.name_first = u'randall' @before_flush def enforce_president(self): try: self.enforce_president_call_count += 1 except AttributeError: self.enforce_president_call_count = 1 if self.name_last == u'Obama' and self.name_first != 'President': self.add_validation_error('name_first', 'must be "President"') @classmethod def get(cls, oid): return sess.query(cls).get(oid)
class Data(db.Model, ValidationMixin): # auto keys id = db.Column(db.Integer, primary_key=True) utc_created = db.Column(db.DateTime, nullable=False, default=dt.utcnow()) utc_updated = db.Column(db.DateTime, nullable=False, default=dt.utcnow(), onupdate=dt.utcnow()) # other keys mp_month = db.Column(db.String(4), nullable=False) cm_name = db.Column(db.String(64), nullable=False) adm0_name = db.Column(db.String(64), nullable=False) adm1_name = db.Column(db.String(128), nullable=False) mkt_name = db.Column(db.String(32), nullable=False) cm_name = db.Column(db.String(32), nullable=False) mp_price = db.Column(db.Numeric, nullable=False) mp_year = db.Column(db.Integer, nullable=False) # validation val.validates_constraints() def __repr__(self): return '<Age(%r)>' % self.dataset_name
class Family(Base, ValidationMixin): __tablename__ = 'families' # SA COLUMNS id = sa.Column(sa.Integer, primary_key=True) createdts = sa.Column(sa.DateTime, nullable=False, default=datetime.now, server_default=sasql.text('CURRENT_TIMESTAMP')) updatedts = sa.Column(sa.DateTime, onupdate=datetime.now) name = sa.Column(sa.Unicode(75), nullable=False, unique=True) reg_num = sa.Column(sa.Integer, nullable=False, unique=True) status = sa.Column(sa.Unicode(15), nullable=False, default=u'active', server_default=u'active') # VALIDATION STATUS_CHOICES = ( ('active', 'Active'), ('inactive', 'Inactive'), ('moved', 'Moved'), ) val.validates_constraints() val.validates_one_of('status', [k for k, v in STATUS_CHOICES]) # OTHER def __str__(self): return '<Family id=%s, name=%s>' % (self.id, self.name)
class User(Base, UserMixin): __tablename__ = 'auth_users' val.validates_constraints() validates_unique('login_id', 'email_address')
class Group(Base, GroupMixin): __tablename__ = 'auth_groups' val.validates_constraints() validates_unique('name')
class Account(db.Model, ValidationMixin): # constraints __table_args__ = ( db.UniqueConstraint( 'name', 'type_id', 'company_id', 'currency_id', 'owner_id'), {}) # auto keys id = db.Column(db.Integer, primary_key=True) utc_created = db.Column(db.DateTime, nullable=False, default=dt.utcnow()) utc_updated = db.Column( db.DateTime, nullable=False, default=dt.utcnow(), onupdate=dt.utcnow()) # foreign keys type_id = db.Column( db.Integer, db.ForeignKey( 'account_type.id', onupdate="CASCADE", ondelete="CASCADE"), nullable=False) type = db.relationship( 'AccountType', lazy='joined', backref=backref('accounts', cascade='all, delete')) company_id = db.Column( db.Integer, db.ForeignKey( 'company.id', onupdate="CASCADE", ondelete="CASCADE"), nullable=False) company = db.relationship( 'Company', lazy='joined', backref=backref('accounts', cascade='all, delete')) currency_id = db.Column( db.Integer, db.ForeignKey( 'commodity.id', onupdate="CASCADE", ondelete="CASCADE"), nullable=False) currency = db.relationship( 'Commodity', lazy='joined', backref=backref('accounts', cascade='all, delete')) owner_id = db.Column( db.Integer, db.ForeignKey( 'person.id', onupdate="CASCADE", ondelete="CASCADE"), nullable=False) owner = db.relationship( 'Person', lazy='joined', backref=backref('accounts', cascade='all, delete')) # other keys name = db.Column(db.String(64), unique=True, nullable=False) min_balance = db.Column(db.Float, default=0) trade_commission = db.Column(db.Float, default=0) annual_fee = db.Column(db.Float, default=0) # validation val.validates_constraints() def __repr__(self): return ('<Account(%r)>' % self.name) def __str__(self): return ('%s' % self.name)