class ChildDocument(BaseScopedIdMixin, Base): __tablename__ = 'child_document' parent_id = Column(None, ForeignKey('middle_container.id')) parent = relationship(MiddleContainer, backref='children') query = Session.query_property() def permissions(self, user, inherited=None): if inherited is None: perms = set() else: perms = inherited if user.username == 'foo': if 'delete' in perms: perms.remove('delete') return perms
class ParentDocument(BaseNameMixin, Base): __tablename__ = 'parent_document' middle_id = Column(None, ForeignKey('middle_container.id')) middle = relationship(MiddleContainer, uselist=False) query = Session.query_property() def __init__(self, **kwargs): super(ParentDocument, self).__init__(**kwargs) self.middle = MiddleContainer() def permissions(self, user, inherited=None): perms = super(ParentDocument, self).permissions(user, inherited) perms.add('view') if user.username == 'foo': perms.add('edit') perms.add('delete') return perms
class MiddleContainer(BaseMixin, Base): __tablename__ = 'middle_container' query = Session.query_property()