'polymorphic_on': type, 'with_polymorphic': '*', '_polymorphic_map': TopicPolymorphicMap() } # noinspection PyUnusedLocal def upgrade(engine, operations_factory): if not engine.dialect.has_table(engine.connect(), Topic.__tablename__): return version = get_current_version(engine) if version == 0: with operations_factory() as operations: quality_column = Column('status', String(8), nullable=False, server_default=Status.Ok.__str__()) operations.add_column(Topic.__tablename__, quality_column) version = 1 def get_current_version(engine): m = MetaData(engine) topics = Table(Topic.__tablename__, m, autoload=True) if 'status' not in topics.columns: return 0 return 1 add_upgrade(upgrade)
__mapper_args__ = { 'polymorphic_identity': 'topic', 'polymorphic_on': type, 'with_polymorphic': '*', '_polymorphic_map': TopicPolymorphicMap() } # noinspection PyUnusedLocal def upgrade(engine, operations_factory): if not engine.dialect.has_table(engine.connect(), Topic.__tablename__): return version = get_current_version(engine) if version == 0: with operations_factory() as operations: quality_column = Column('status', String(8), nullable=False, server_default=Status.Ok.__str__()) operations.add_column(Topic.__tablename__, quality_column) version = 1 def get_current_version(engine): m = MetaData(engine) topics = Table(Topic.__tablename__, m, autoload=True) if 'status' not in topics.columns: return 0 return 1 add_upgrade(upgrade)
def register_plugin(type, name, instance, upgrade=None): if not upgrade: upgrade = getattr(instance, 'upgrade', None) if upgrade: add_upgrade(upgrade) plugins.setdefault(type, dict())[name] = instance