X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;ds=sidebyside;f=bluechips%2Fmodel%2F__init__.py;h=9261b971a794847ac18566a24715d550bb18d396;hb=d743a3b7011fdb293efbc0b002623d1079faeb35;hp=24e72d7eae3b93c4882609ce1608e74dc866c12e;hpb=b5ee99d4e12311d9b7b5aa9b207185a96fff4f95;p=bluechips.git diff --git a/bluechips/model/__init__.py b/bluechips/model/__init__.py index 24e72d7..9261b97 100644 --- a/bluechips/model/__init__.py +++ b/bluechips/model/__init__.py @@ -2,9 +2,17 @@ import sqlalchemy as sa from sqlalchemy import orm +from user import * +from expenditure import * +from split import * +from subitem import * +from transfer import * + from bluechips.model import meta from bluechips.model import types +from datetime import datetime + def init_model(engine): """Call me before using any of the tables or classes in the model""" @@ -28,9 +36,9 @@ expenditures = sa.Table('expenditures', meta.metadata, sa.ForeignKey('users.id'), nullable=False), sa.Column('amount', types.Currency, nullable=False), sa.Column('description', sa.types.Text), - sa.Column('date', sa.types.Date, default=sa.func.now), + sa.Column('date', sa.types.Date, default=datetime.now), sa.Column('entered_time', sa.types.DateTime, - default=sa.func.now) + default=datetime.now) ) splits = sa.Table('splits', meta.metadata, @@ -59,46 +67,20 @@ transfers = sa.Table('transfers', meta.metadata, sa.ForeignKey('users.id'), nullable=False), sa.Column('amount', types.Currency, nullable=False), sa.Column('description', sa.Text, default=None), - sa.Column('date', sa.types.Date, default=sa.func.now), + sa.Column('date', sa.types.Date, default=datetime.now), sa.Column('entered_time', sa.types.DateTime, - default=sa.func.now) + default=datetime.now) ) -### ORM Classes ### - -class User(object): - def __repr__(self): - return '' % (self.username) - -class Expenditure(object): - def __repr__(self): - return '' % (self.spender, - self.amount) - -class Split(object): - def __repr__(self): - return '' % (self.expenditure, - self.user, - self.share) - -class Subitem(object): - def __repr__(self): - return '' % (self.expense, - self.user, - self.amount) - -class Transfer(object): - def __repr__(self): - return '' % (self.debtor, - self.creditor, - self.amount) - ### DB/Class Mapping ### orm.mapper(User, users) -orm.mapper(Expenditure, expenditures, properties={ - 'spender': orm.relation(User, backref='expenditures') +orm.mapper(Expenditure, expenditures, order_by=expenditures.c.date.desc(), + properties={ + 'spender': orm.relation(User, + backref='expenditures', + lazy=False) }) orm.mapper(Split, splits, properties={ @@ -111,13 +93,16 @@ orm.mapper(Subitem, subitems, properties={ 'user': orm.relation(User) }) -orm.mapper(Transfer, transfers, properties={ +orm.mapper(Transfer, transfers, order_by=transfers.c.date.desc(), + properties={ 'debtor': orm.relation(User, primaryjoin=(transfers.c.debtor_id==\ - users.c.id)), + users.c.id), + lazy=False), 'creditor': orm.relation(User, primaryjoin=(transfers.c.creditor_id==\ - users.c.id)) + users.c.id), + lazy=False) }) __all__ = ['users', 'expenditures', 'splits', 'subitems', 'transfers',