diff --git a/sourcing/model.py b/sourcing/model.py index 6ccf03f..71f5e72 100644 --- a/sourcing/model.py +++ b/sourcing/model.py @@ -122,6 +122,14 @@ class User(TimeStampedModel, UserMixin): raise LoginError('incorrect password') return user +class Reference(Base): + __tablename__ = 'reference' + subject_id = Column(Integer, ForeignKey('item.id'), primary_key=True) + object_id = Column(Integer, ForeignKey('item.id'), primary_key=True) + + subject_item = relationship('User', backref='objects') + object_item = relationship('User', backref='subjects') + class Item(TimeStampedModel): __tablename__ = 'item' __versioned__ = {'base_classes': (TimeStampedModel,)} @@ -134,6 +142,15 @@ class Item(TimeStampedModel): filename = Column(Unicode) text = Column(UnicodeText) + subjects = relationship('item', + secondary='reference', + # backref='object_item', + primaryjoin=id == Reference.object_id) + objects = relationship('item', + secondary='reference', + # backref='subjects_item', + primaryjoin=id == Reference.subject_id) + user = relationship('User', backref='items') __mapper_args__ = {