def create_models(self): tagging = sa.Table( 'tagging', self.Base.metadata, sa.Column('tag_id', sa.Integer, sa.ForeignKey('tag.id', ondelete='cascade'), primary_key=True), sa.Column('entry_id', sa.Integer, sa.ForeignKey('entry.id', ondelete='cascade'), primary_key=True)) class Tag(self.Base): __tablename__ = 'tag' id = sa.Column(sa.Integer, primary_key=True) name = sa.Column(sa.String(100), unique=True, nullable=False) def __init__(self, name=None): self.name = name class Entry(self.Base): __tablename__ = 'entry' id = sa.Column(sa.Integer, primary_key=True) tags = sa.orm.relationship('Tag', secondary=tagging, backref='entries') auto_delete_orphans(Entry.tags) self.Tag = Tag self.Entry = Entry
def Entry(Base, Tag, tagging_tbl, request): class Entry(Base): __tablename__ = 'entry' id = sa.Column(sa.Integer, primary_key=True) tags = sa.orm.relationship(Tag, secondary=tagging_tbl, backref=request.param) auto_delete_orphans(Entry.tags) return Entry
def Entry(Base, Tag, tagging_tbl): class Entry(Base): __tablename__ = 'entry' id = sa.Column(sa.Integer, primary_key=True) tags = sa.orm.relationship( 'Tag', secondary=tagging_tbl, backref='entries' ) auto_delete_orphans(Entry.tags) return Entry
def create_models(self): tagging = sa.Table( 'tagging', self.Base.metadata, sa.Column( 'tag_id', sa.Integer, sa.ForeignKey('tag.id', ondelete='cascade'), primary_key=True ), sa.Column( 'entry_id', sa.Integer, sa.ForeignKey('entry.id', ondelete='cascade'), primary_key=True ) ) class Tag(self.Base): __tablename__ = 'tag' id = sa.Column(sa.Integer, primary_key=True) name = sa.Column(sa.String(100), unique=True, nullable=False) def __init__(self, name=None): self.name = name class Entry(self.Base): __tablename__ = 'entry' id = sa.Column(sa.Integer, primary_key=True) tags = sa.orm.relationship( 'Tag', secondary=tagging, backref='entries' ) auto_delete_orphans(Entry.tags) self.Tag = Tag self.Entry = Entry
def __repr__(self): return '<Point %d>' % (self.id) def getJSON(self): json = { "position": self.position, "lat": self.location.lat, "lon": self.location.lon } return json # Obstacle Class class Obstacle(db.Model): # table name __tablename__ = 'obstacle' # columns id = db.Column(db.Integer(), primary_key=True) loc_id = db.Column(db.Integer(), db.ForeignKey('location.id')) # relationships location = db.relationship("Location",backref=db.backref("obstacle", uselist=False), cascade="all, delete-orphan", single_parent=True) # inheritance # class functions def __repr__(self): return '<Obstacle %d>' % (self.id) auto_delete_orphans(Node.jumppoints) auto_delete_orphans(Node.goals)
def test_orphan_deletion(self, EntryWithoutTagsBackref): with pytest.raises(ImproperlyConfigured): auto_delete_orphans(EntryWithoutTagsBackref.tags)
def test_orphan_deletion(self): with raises(ImproperlyConfigured): auto_delete_orphans(self.Entry.tags)