X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=bluechips%2Fmodel%2F__init__.py;h=ee991b75abbc127abf67ed194f24ff89a301f1a8;hb=fed6d11d2cbd6d617d18bc01a78196865da4155b;hp=11fb0e5262cb193ef98c8d69cd122f0b04fcf624;hpb=f4d8f4cc0fa9643c3ca04c7dcc2c87f3790160de;p=bluechips.git diff --git a/bluechips/model/__init__.py b/bluechips/model/__init__.py index 11fb0e5..ee991b7 100644 --- a/bluechips/model/__init__.py +++ b/bluechips/model/__init__.py @@ -56,10 +56,15 @@ splits = sa.Table('splits', meta.metadata, tags = sa.Table('tags', meta.metadata, sa.Column('id', sa.types.Integer, primary_key=True), - sa.Column('expenditure_id', sa.types.Integer, - sa.ForeignKey('expenditures.id'), nullable=False), - sa.Column('tag', sa.Text, nullable=False)) + sa.Column('name', sa.Text)) +tag_to_expense_map = sa.Table('tag_to_expense_map', meta.metadata, + sa.Column('tag_id', sa.types.Integer, + sa.ForeignKey('tags.id'), + primary_key=True), + sa.Column('expenditure_id', sa.types.Integer, + sa.ForeignKey('expenditures.id'), + primary_key=True)) subitems = sa.Table('subitems', meta.metadata, sa.Column('id', sa.types.Integer, primary_key=True), @@ -96,8 +101,8 @@ orm.mapper(Expenditure, expenditures, properties={ 'splits': orm.relation(Split, backref='expenditure', cascade='all, delete'), - 'tags': orm.relation(Tag, backref='expenditure', - cascade='all, delete'), + '_tags': orm.relation(Tag, secondary=tag_to_expense_map, + collection_class=set, cascade='all, delete'), 'subitems': orm.relation(Subitem, backref='expenditure', cascade='all, delete') }) @@ -106,7 +111,8 @@ orm.mapper(Split, splits, properties={ 'user': orm.relation(User) }) -orm.mapper(Tag, tags) +orm.mapper(Tag, tags, properties={ + 'expenditures': orm.relation(Expenditure, secondary=tag_to_expense_map)}) orm.mapper(Subitem, subitems, properties={ 'user': orm.relation(User)