Example #1
0
    def _migrate(self, i):
        """
        Run migrations.

        Args:
            i: Migration ID

        Returns:
            False: when migration ID is not found
        """
        migrator = SqliteMigrator(self.db)
        if i >= 0:
            # Migration 0: Add media file ID and editable message ID
            # 2019JAN08
            migrate(
                migrator.add_column("msglog", "file_id", self.MsgLog.file_id),
                migrator.add_column("msglog", "media_type", self.MsgLog.media_type),
                migrator.add_column("msglog", "mime", self.MsgLog.mime),
                migrator.add_column("msglog", "master_msg_id_alt", self.MsgLog.master_msg_id_alt)
            )
        # if i == 0:
        #     # Migration 0: Added Time column in MsgLog table.
        #     # 2016JUN15
        #     migrate(migrator.add_column("msglog", "time", DateTimeField(default=datetime.datetime.now, null=True)))
        # elif i == 1:
        #     # Migration 1:
        #     # Add table: SlaveChatInfo
        #     # 2017FEB25
        #     SlaveChatInfo.create_table()
        #     migrate(migrator.add_column("msglog", "slave_message_id", CharField(default="__none__")))
        #
        # else:
        return False
Example #2
0
def db_upgrade(old_version):
    migrator = SqliteMigrator(_db)
    if old_version < 2:
        User_login.create_table()
        migrate(
            migrator.add_column('clan_member', 'remaining_status',
                                TextField(null=True)),
            migrator.add_column('clan_challenge', 'message',
                                TextField(null=True)),
            migrator.add_column('clan_group', 'boss_lock_type',
                                IntegerField(default=0)),
            migrator.drop_column('user', 'last_save_slot'),
        )
    if old_version < 3:
        migrate(
            migrator.drop_column('user', 'auth_cookie'),
            migrator.drop_column('user', 'auth_cookie_expire_time'),
        )
    if old_version < 4:
        migrate(
            migrator.add_column('user', 'deleted',
                                BooleanField(default=False)), )
    if old_version < 5:
        migrate(
            migrator.add_column('user', 'must_change_password',
                                BooleanField(default=True)), )

    DB_schema.replace(key='version', value=str(_version)).execute()
Example #3
0
def migrate_1_1(db):
    logger.warning('Migrating the database from version 1.0 to 1.1')
    from playhouse.migrate import migrate, SqliteMigrator
    migrator = SqliteMigrator(db)
    extra_info = peewee.TextField(null=True)
    migrate(migrator.add_column('Desc', 'extra_info', extra_info),
            migrator.add_column('Experiment', 'extra_info', extra_info))
    return '1.1'
Example #4
0
def __update_db_1(db):
    migrator = SqliteMigrator(db)

    version = IntegerField(default=1)
    crc32 = BooleanField(default=False)

    migrate(
        migrator.add_column('settings', 'version', version),
        migrator.add_column('track', 'crc32', crc32),
    )
Example #5
0
def upgrade():
    settings = db.Settings.get()
    version = settings.info['version']
    migrator = SqliteMigrator(db.database)

    if version < '0.2':
        migrate(
            migrator.add_column('deck', 'info',
                                sqlite_ext.JSONField(default=dict)),
            migrator.add_column('media', 'info',
                                sqlite_ext.JSONField(default=dict)),
            migrator.add_column('model', 'info',
                                sqlite_ext.JSONField(default=dict)),
            migrator.add_column('template', 'info',
                                sqlite_ext.JSONField(default=dict)),
            migrator.add_column('note', 'info',
                                sqlite_ext.JSONField(default=dict)),
            migrator.add_column('card', 'info',
                                sqlite_ext.JSONField(default=dict)),
            migrator.add_column('card', 'last_review', pv.TimestampField()),
        )
        settings.info['version'] = '0.2'
        settings.save()

    if version < '0.2.1':
        migrate(
            migrator.drop_column('card', 'last_review'),
            migrator.add_column('card', 'last_review',
                                pv.DateTimeField(default=datetime.now)),
            migrator.drop_column('note', 'modified'),
            migrator.add_column('note', 'modified',
                                pv.DateTimeField(default=datetime.now)))
        settings.info['version'] = '0.2.1'
        settings.save()
Example #6
0
def init_db(con):
    db.initialize(con)
    db.connect()
    db.create_tables([
        RepoModel, RepoPassword, BackupProfileModel, SourceDirModel,
        ArchiveModel, WifiSettingModel, EventLogModel, SchemaVersion
    ])

    if BackupProfileModel.select().count() == 0:
        default_profile = BackupProfileModel(name='Default Profile')
        default_profile.save()

    # Delete old log entries after 3 months.
    three_months_ago = datetime.now() - timedelta(days=180)
    EventLogModel.delete().where(EventLogModel.start_time < three_months_ago)

    # Migrations
    # See http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#schema-migrations
    current_schema, created = SchemaVersion.get_or_create(
        id=1, defaults={'version': SCHEMA_VERSION})
    current_schema.save()
    if created or current_schema.version == SCHEMA_VERSION:
        return
    else:
        migrator = SqliteMigrator(con)

    if current_schema.version < 4:  # version 3 to 4
        _apply_schema_update(
            current_schema, 4,
            migrator.add_column(ArchiveModel._meta.table_name, 'duration',
                                pw.FloatField(null=True)),
            migrator.add_column(ArchiveModel._meta.table_name, 'size',
                                pw.IntegerField(null=True)))
    if current_schema.version < 5:
        _apply_schema_update(
            current_schema,
            5,
            migrator.drop_not_null(WifiSettingModel._meta.table_name,
                                   'last_connected'),
        )

    if current_schema.version < 6:
        _apply_schema_update(
            current_schema, 6,
            migrator.add_column(EventLogModel._meta.table_name, 'repo_url',
                                pw.CharField(null=True)))

    if current_schema.version < 7:
        _apply_schema_update(
            current_schema, 7,
            migrator.rename_column(SourceDirModel._meta.table_name,
                                   'config_id', 'profile_id'),
            migrator.drop_column(EventLogModel._meta.table_name, 'profile_id'),
            migrator.add_column(EventLogModel._meta.table_name, 'profile',
                                pw.CharField(null=True)))
Example #7
0
File: db.py Project: paxet/retadys
def migrate_v1():
    ddbb = get_db()
    migrator = SqliteMigrator(ddbb)
    fecha_entrega_prevista = DateTimeField(formats='%d-%m-%Y %H:%M:%S', null=True)
    horas_trabajo_diario = IntegerField(default=8,
                                        db_column='horas_trabajo_diario',
                                        constraints=[Check('horas_trabajo_diario <= 24')])
    with ddbb.transaction():
        migrate(
            migrator.add_column('programacion', 'fecha_entrega_prevista', fecha_entrega_prevista),
            migrator.add_column('maquina', 'horas_trabajo_diario', horas_trabajo_diario),
        )
        actulizado = True
    return actulizado
Example #8
0
 def Migrate(self):
     migrator = SqliteMigrator(self._db)
     migrate(
         migrator.drop_not_null('Contract', 'Account_id'),
         migrator.add_column('Address', 'IsWatchOnly',
                             BooleanField(default=False)),
     )
Example #9
0
def __update_db_2(db):
    migrator = SqliteMigrator(db)

    playback_speed = FloatField(default=1.0)

    migrate(migrator.add_column('book', 'playback_speed', playback_speed), )

    Settings.update(version=2).execute()
Example #10
0
def __update_db_4(db):
    migrator = SqliteMigrator(db)

    last_played = IntegerField(default=0)

    migrate(migrator.add_column('book', 'last_played', last_played), )

    Settings.update(version=4).execute()
Example #11
0
def __update_db_6(db):
    migrator = SqliteMigrator(db)

    db.create_tables([OfflineCache])

    external = BooleanField(default=False)
    offline = BooleanField(default=False)
    downloaded = BooleanField(default=False)

    migrate(migrator.add_column('storage', 'external', external),
            migrator.add_column('book', 'offline', offline),
            migrator.add_column('book', 'downloaded', downloaded))

    Settings.update(version=6).execute()

    import shutil
    shutil.rmtree(get_cache_dir())
Example #12
0
    def make_migrate_operations(self, db: _DatabaseSub) -> T.List[Operation]:
        migrator = SqliteMigrator(T.cast(pw.SqliteDatabase, db))

        ops = [
            migrator.add_column("ldaset", "metrics_id",
                                models.LDASet._meta.columns["metrics_id"])
        ]
        return ops
Example #13
0
def update_tables():
    migrator = SqliteMigrator(BaseModel._meta.database)
    mesh_columns = [
        e.name for e in BaseModel._meta.database.get_columns('meshes')
    ]
    if 'switch_time' not in mesh_columns:
        migrate(migrator.add_column('meshes', 'switch_time',
                                    Mesh.switch_time), )
Example #14
0
 def KfpMigrate(database: SqliteDatabase):
     tables = database.get_tables()
     migrator = SqliteMigrator(database)
     if "rpgcharacter" in tables:
         columns = database.get_columns("rpgcharacter")
         if not KfpMigrator.hasColumn("retired", columns):
             retiredField = BooleanField(default=False)
             migrate(
                 migrator.add_column("rpgcharacter", "retired", retiredField)
             )
         if not KfpMigrator.hasColumn("last_attack", columns):
             lastAttackField = DateTimeField(default=datetime.now() + timedelta(days=-1))
             migrate(
                 migrator.add_column("rpgcharacter", "last_attack", lastAttackField)
             )
     if "member" in tables:
         columns = database.get_columns("member")
         if not KfpMigrator.hasColumn("token", columns):
             tokenField = BigIntegerField(default=100)
             migrate(
                 migrator.add_column("member", 'token', tokenField)
             )
     if "channel" in tables:
         columns = database.get_columns("channel")
         if not KfpMigrator.hasColumn("channel_id", columns):
             guildIdField = IntegerField(default=-1)
             migrate(
                 migrator.add_column('channel', 'channel_guild_id', guildIdField),
                 migrator.rename_column('channel', 'channel_discord_id', 'channel_id'),
             )
     if "item" in tables:
         columns = database.get_columns("item")
         if KfpMigrator.hasColumn("hidden", columns):                
             migrate(
                 migrator.drop_column('item', 'hidden'),
             )
         if KfpMigrator.hasColumn("buff_type", columns):                
             migrate(
                 migrator.drop_column('item', 'buff_type'),
             )
         if KfpMigrator.hasColumn("buff_value", columns):                
             migrate(
                 migrator.drop_column('item', 'buff_value'),
             )
         if not KfpMigrator.hasColumn("type", columns):
             typeField = CharField(default=ItemType.NONE)
             migrate(
                 migrator.add_column('item', 'type', typeField),
             )
         if not KfpMigrator.hasColumn("buff", columns):
             buff = BuffField(default=Buff(BuffType.NONE, 0, -1))
             migrate(
                 migrator.add_column('item', 'buff', buff),
             )
         if not KfpMigrator.hasColumn("description", columns):
             description = CharField(default="")
             migrate(
                 migrator.add_column('item', 'description', description),
             )
     return True
Example #15
0
    def _migrate(i: int):
        """
        Run migrations.

        Args:
            i: Migration ID
        """
        migrator = SqliteMigrator(database)

        if i <= 0:
            # Migration 0: Add media file ID and editable message ID
            # 2019JAN08
            migrate(
                migrator.add_column("msglog", "file_id", MsgLog.file_id),
                migrator.add_column("msglog", "media_type", MsgLog.media_type),
                migrator.add_column("msglog", "mime", MsgLog.mime),
                migrator.add_column("msglog", "master_msg_id_alt",
                                    MsgLog.master_msg_id_alt))
        if i <= 1:
            # Migration 1: Add pickle objects to MsgLog and SlaveChatInfo
            # 2019JUL24
            migrate(
                migrator.add_column("msglog", "pickle", MsgLog.pickle),
                migrator.add_column("slavechatinfo", "pickle",
                                    SlaveChatInfo.pickle))
        if i <= 2:
            # Migration 2: Add column for group ID to slave chat info table
            # 2019NOV18
            migrate(
                migrator.add_column("slavechatinfo", "slave_chat_group_id",
                                    SlaveChatInfo.slave_chat_group_id))
Example #16
0
def m_role_column():
    "add the role column to player table"
    from playhouse.migrate import migrate, SqliteMigrator
    from peewee import CharField
    from wwbot.db import db
    db.connect()
    field = CharField(default="")
    migrator = SqliteMigrator(db)
    migrate(migrator.add_column('player', 'role', field))
Example #17
0
File: db.py Project: Fatih20/cozy
def update_db_2():
    """
    Update database to v2.
    """
    migrator = SqliteMigrator(db)

    playback_speed = FloatField(default=1.0)

    migrate(migrator.add_column('book', 'playback_speed', playback_speed), )

    Settings.update(version=2).execute()
Example #18
0
File: db.py Project: Fatih20/cozy
def update_db_4():
    """
    Update database to v4.
    """
    migrator = SqliteMigrator(db)

    last_played = IntegerField(default=0)

    migrate(migrator.add_column('book', 'last_played', last_played), )

    Settings.update(version=4).execute()
Example #19
0
def init_db() -> None:
    with db:
        db.create_tables([Token, Order])
    columns = db.get_columns('token')
    column_names = [c.name for c in columns]
    migrator = SqliteMigrator(db)
    with db.atomic():
        if 'effective_buy_price' not in column_names:
            migrate(
                migrator.add_column('token', 'effective_buy_price',
                                    Token.effective_buy_price))
Example #20
0
def migrate_db():
    db = get_db()
    if isinstance(db, SqliteDatabase):
        from timekeeper.models import User
        migrator = SqliteMigrator(db)
        try:
            with db.transaction():
                migrate(migrator.add_column('user', 'name', User.name))
        except OperationalError as e:
            message, *_ = e.args
            if 'duplicate column name: name' not in message:
                raise
Example #21
0
def apply_v2():
    db = SqliteDatabase(r"data\results.db")
    migrator = SqliteMigrator(db)
    
    points1 = CharField(max_length=100, null=True)
    points2 = CharField(max_length=100, null=True)
        
    migrate(
        migrator.add_column("shapedistance", "points1", points1),
        migrator.add_column("shapedistance", "points2", points2),
        migrator.drop_column("shapedistance", "bitmap"),
    )
Example #22
0
File: db.py Project: TheMBTH/cozy
def update_db_6():
    """
    """
    migrator = SqliteMigrator(db)

    last_played = BooleanField(default=False)

    migrate(
        migrator.add_column('storage', 'external', last_played),
    )

    Settings.update(version=6).execute()
Example #23
0
    def add_column(slef, table, field):
        '''
    动态添加字段

    https://stackoverflow.com/questions/35012012/peewee-adding-columns-on-demand

    Args:
        slef ([type]): [description]
        table ([type]): [description]
        field ([type]): [description]
    '''
        from playhouse.migrate import SqliteMigrator, migrate
        migrator = SqliteMigrator(_connect)
        migrate(migrator.add_column(table, field.name, field), )
Example #24
0
def apply():
    database = SqliteDatabase(settings.DATABASE)
    migrator = SqliteMigrator(database)

    with database.transaction():
        database.execute_sql('CREATE TABLE user (pk INTEGER PRIMARY KEY)')
        database.execute_sql('CREATE TABLE snippet (pk INTEGER PRIMARY KEY)')

        for field in (
                User.created_at,
                User.updated_at,
                User.name,
                User.passhash,
                Snippet.created_at,
                Snippet.updated_at,
                Snippet.syntax,
                Snippet.raw,
                Snippet.html,
        ):
            field.null = True

        migrate(
            # user table
            migrator.add_column('user', 'created_at', User.created_at),
            migrator.add_column('user', 'updated_at', User.updated_at),
            migrator.add_column('user', 'name', User.name),
            migrator.add_column('user', 'passhash', User.passhash),
            migrator.add_index('user', ('name', ), True),
            migrator.add_index('user', ('updated_at', ), False),

            # snippet table
            migrator.add_column('snippet', 'created_at', Snippet.created_at),
            migrator.add_column('snippet', 'updated_at', Snippet.updated_at),
            migrator.add_column('snippet', 'author_id', Snippet.author),
            migrator.add_column('snippet', 'name', Snippet.name),
            migrator.add_column('snippet', 'syntax', Snippet.syntax),
            migrator.add_column('snippet', 'raw', Snippet.raw),
            migrator.add_column('snippet', 'html', Snippet.html),
            migrator.add_index('snippet', ('updated_at', ), False),
        )
Example #25
0
class TestMigrations(unittest.TestCase):
    def setUp(self):
        Food.create_table()
        self.migrator = SqliteMigrator(database)

    def tearDown(self):
        Food.drop_table()

    def test_add_column(self):
        Food.another_column = CharField(null=True)
        migrate(self.migrator.add_column('food', 'another_column', Food.another_column))
        # TODO: How to test if another_column now actually exists in both the `food` table as the `foodversioned` table?

    def test_drop_column(self):
        del Food.is_tasty
        migrate(self.migrator.drop_column('food', 'is_tasty'))
def run_migration():
    recipes_db = SqliteDatabase(os.path.join(SCRIPT_DIR, '../recipes.db'))
    migrator = SqliteMigrator(recipes_db)

    new_picture_field = TextField(null=True)
    updated_pictures = [(recipe_id, update_picture(picture)) for (
        recipe_id,
        picture) in recipes_db.execute_sql('SELECT id, picture FROM recipe')]

    migrate(
        migrator.drop_column('recipe', 'picture'),
        migrator.add_column('recipe', 'picture', new_picture_field),
    )

    for (recipe_id, picture) in updated_pictures:
        if picture:
            recipes_db.execute_sql('UPDATE recipe SET picture=? WHERE id=?',
                                   (picture, recipe_id))
Example #27
0
    def _init_db_tables(self, database, additional_tables=None):
        database.create_tables([cache.Config, pim.Content, cache.User, cache.JournalEntity,
                                cache.EntryEntity, cache.UserInfo], safe=True)
        if additional_tables:
            database.create_tables(additional_tables, safe=True)

        db_version = cache.Config.get_or_none()
        if db_version is None:
            from playhouse.migrate import SqliteMigrator, migrate
            # Essentially version 0 so do first migration.
            migrator = SqliteMigrator(database)

            try:
                migrate(
                    migrator.add_column('journalentity', 'read_only', cache.JournalEntity.read_only),
                )
            except peewee.OperationalError:
                # A hack because we don't have a db config yet.
                pass

            cache.Config.insert(db_version=1).execute()
Example #28
0
def bits():
    """ bits, badges, colors, yolo """
    migrator = SqliteMigrator(db)

    badges = CharField(null=True, default=None)
    color = CharField(default="#FFF")
    bits = IntegerField(default=0)
    sub = BooleanField(default=False)
    turbo = BooleanField(default=False)
    mod = BooleanField(default=False)

    migrate(
        migrator.add_column('messages', 'bits', bits),
        migrator.add_column('messages', 'badges', badges),
        migrator.add_column('messages', 'color', color),
        migrator.add_column('messages', 'sub', sub),
        migrator.add_column('messages', 'turbo', turbo),
        migrator.add_column('messages', 'mod', mod),
    )
Example #29
0
import os

from decouple import config
from playhouse.migrate import SqliteMigrator, IntegerField, migrate
from playhouse.sqlite_ext import SqliteExtDatabase

from model.revision import Revision

db_path = config('DATABASE_URI',
                 default=os.path.expanduser('~/botlistbot.sqlite3'))
db = SqliteExtDatabase(db_path)

migrator = SqliteMigrator(db)

revision = IntegerField(default=100)

with db.transaction():
    migrate(migrator.add_column('bot', 'revision', revision), )

Revision.create_table(fail_silently=True)
Revision.insert({'nr': 101}).execute()
        if self.last_tweet_id == 0:
            return None

        return Tweet.get(Tweet.tw_id == self.last_tweet_id)


class Tweet(Model):
    tw_id = BigIntegerField(unique=True)
    known_at = DateTimeField(default=datetime.datetime.now)
    text = TextField()
    created_at = DateTimeField()
    twitter_user = ForeignKeyField(TwitterUser, related_name='tweets')
    photo_url = TextField(default='')

    @property
    def screen_name(self):
        return self.twitter_user.screen_name

    @property
    def name(self):
        return self.twitter_user.name

# Migrate photo_url
try:
    db = SqliteDatabase('peewee.db')
    migrator = SqliteMigrator(db)

    migrate(migrator.add_column('tweet', 'photo_url', Tweet.photo_url))
except OperationalError:
    pass
Example #31
0
def init_db(con=None):
    if con is not None:
        os.umask(0o0077)
        db.initialize(con)
        db.connect()
    db.create_tables([
        RepoModel, RepoPassword, BackupProfileModel, SourceFileModel,
        SettingsModel, ArchiveModel, WifiSettingModel, EventLogModel,
        SchemaVersion
    ])

    if BackupProfileModel.select().count() == 0:
        default_profile = BackupProfileModel(name='Default')
        default_profile.save()

    # Delete old log entries after 3 months.
    three_months_ago = datetime.now() - timedelta(days=180)
    EventLogModel.delete().where(EventLogModel.start_time < three_months_ago)

    # Migrations
    # See http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#schema-migrations
    current_schema, created = SchemaVersion.get_or_create(
        id=1, defaults={'version': SCHEMA_VERSION})
    current_schema.save()
    if created or current_schema.version == SCHEMA_VERSION:
        pass
    else:
        migrator = SqliteMigrator(con)

    if current_schema.version < 4:  # version 3 to 4
        _apply_schema_update(
            current_schema, 4,
            migrator.add_column(ArchiveModel._meta.table_name, 'duration',
                                pw.FloatField(null=True)),
            migrator.add_column(ArchiveModel._meta.table_name, 'size',
                                pw.IntegerField(null=True)))
    if current_schema.version < 5:
        _apply_schema_update(
            current_schema,
            5,
            migrator.drop_not_null(WifiSettingModel._meta.table_name,
                                   'last_connected'),
        )

    if current_schema.version < 6:
        _apply_schema_update(
            current_schema, 6,
            migrator.add_column(EventLogModel._meta.table_name, 'repo_url',
                                pw.CharField(null=True)))

    if current_schema.version < 7:
        _apply_schema_update(
            current_schema, 7,
            migrator.rename_column(SourceFileModel._meta.table_name,
                                   'config_id', 'profile_id'),
            migrator.drop_column(EventLogModel._meta.table_name, 'profile_id'),
            migrator.add_column(EventLogModel._meta.table_name, 'profile',
                                pw.CharField(null=True)))

    if current_schema.version < 8:
        _apply_schema_update(
            current_schema, 8,
            migrator.add_column(BackupProfileModel._meta.table_name,
                                'prune_keep_within', pw.CharField(null=True)))

    if current_schema.version < 9:
        _apply_schema_update(
            current_schema,
            9,
            migrator.add_column(
                BackupProfileModel._meta.table_name, 'new_archive_name',
                pw.CharField(
                    default="{hostname}-{profile_slug}-{now:%Y-%m-%dT%H:%M:%S}"
                )),
            migrator.add_column(
                BackupProfileModel._meta.table_name, 'prune_prefix',
                pw.CharField(default="{hostname}-{profile_slug}-")),
        )

    if current_schema.version < 10:
        _apply_schema_update(
            current_schema,
            10,
            migrator.add_column(BackupProfileModel._meta.table_name,
                                'pre_backup_cmd', pw.CharField(default='')),
            migrator.add_column(BackupProfileModel._meta.table_name,
                                'post_backup_cmd', pw.CharField(default='')),
        )

    if current_schema.version < 11:
        _apply_schema_update(current_schema, 11)
        for profile in BackupProfileModel:
            if profile.compression == 'zstd':
                profile.compression = 'zstd,3'
            if profile.compression == 'lzma,6':
                profile.compression = 'auto,lzma,6'
            profile.save()

    if current_schema.version < 12:
        _apply_schema_update(
            current_schema, 12,
            migrator.add_column(RepoModel._meta.table_name,
                                'extra_borg_arguments',
                                pw.CharField(default='')))

    if current_schema.version < 13:
        # Migrate ArchiveModel data to new table to remove unique constraint from snapshot_id column.
        tables = db.get_tables()
        if ArchiveModel.select().count() == 0 and 'snapshotmodel' in tables:
            cursor = db.execute_sql('select * from snapshotmodel;')
            fields = [
                ArchiveModel.id, ArchiveModel.snapshot_id, ArchiveModel.name,
                ArchiveModel.repo, ArchiveModel.time, ArchiveModel.duration,
                ArchiveModel.size
            ]
            data = [row for row in cursor.fetchall()]
            with db.atomic():
                size = 1000
                for i in range(0, len(data), size):
                    ArchiveModel.insert_many(data[i:i + size],
                                             fields=fields).execute()

        _apply_schema_update(current_schema, 13)

    if current_schema.version < 14:
        _apply_schema_update(
            current_schema, 14,
            migrator.add_column(SettingsModel._meta.table_name, 'str_value',
                                pw.CharField(default='')))

    if current_schema.version < 15:
        _apply_schema_update(
            current_schema, 15,
            migrator.add_column(BackupProfileModel._meta.table_name,
                                'dont_run_on_metered_networks',
                                pw.BooleanField(default=True)))

    if current_schema.version < 16:
        _apply_schema_update(
            current_schema, 16,
            migrator.add_column(SourceFileModel._meta.table_name, 'dir_size',
                                pw.BigIntegerField(default=-1)),
            migrator.add_column(SourceFileModel._meta.table_name,
                                'dir_files_count',
                                pw.BigIntegerField(default=-1)),
            migrator.add_column(SourceFileModel._meta.table_name, 'path_isdir',
                                pw.BooleanField(default=False)))

    # Create missing settings and update labels. Leave setting values untouched.
    for setting in get_misc_settings():
        s, created = SettingsModel.get_or_create(key=setting['key'],
                                                 defaults=setting)
        s.label = setting['label']
        s.save()

    # Delete old log entries after 3 months.
    three_months_ago = datetime.now() - rd(months=3)
    EventLogModel.delete().where(EventLogModel.start_time < three_months_ago)
Example #32
0
def db_upgrade(old_version):
    migrator = SqliteMigrator(_db)
    if old_version < 2:
        User_login.create_table()
        migrate(
            migrator.add_column('clan_member', 'remaining_status',
                                TextField(null=True)),
            migrator.add_column('clan_challenge', 'message',
                                TextField(null=True)),
            migrator.add_column('clan_group', 'boss_lock_type',
                                IntegerField(default=0)),
            migrator.drop_column('user', 'last_save_slot'),
        )
    if old_version < 3:
        migrate(
            migrator.drop_column('user', 'auth_cookie'),
            migrator.drop_column('user', 'auth_cookie_expire_time'),
        )
    if old_version < 4:
        migrate(
            migrator.add_column('user', 'deleted',
                                BooleanField(default=False)), )
    if old_version < 5:
        migrate(
            migrator.add_column('user', 'must_change_password',
                                BooleanField(default=True)), )
    if old_version < 6:
        User.update({
            User.authority_group: 1
        }).where(User.authority_group == 2).execute()
    if old_version < 7:
        migrate(
            migrator.drop_column('clan_challenge', 'comment'),
            migrator.add_column('clan_challenge', 'behalf',
                                IntegerField(null=True)),
            migrator.drop_column('clan_subscribe', 'comment'),
            migrator.add_column('clan_subscribe', 'message',
                                TextField(null=True)),
            migrator.add_column('clan_group', 'apikey',
                                CharField(max_length=16, default=rand_string)),
        )
    if old_version < 8:
        migrate(
            migrator.add_column('clan_group', 'deleted',
                                BooleanField(default=False)),
            migrator.add_column('clan_group', 'battle_id',
                                IntegerField(default=0)),
            migrator.add_column('clan_challenge', 'bid',
                                IntegerField(default=0)),
            migrator.add_index('clan_challenge', ('bid', 'gid'), False))

    DB_schema.replace(key='version', value=str(_version)).execute()
import argparse

from playhouse.migrate import SqliteMigrator, SqliteDatabase, CharField, migrate

parser = argparse.ArgumentParser(description='Migration: add ip_address field to ConnectionInfo.')
parser.add_argument("dbfile")

args = parser.parse_args()

my_db = SqliteDatabase(args.dbfile)
migrator = SqliteMigrator(my_db)

ipfield = CharField(default='')

with my_db.transaction():
    migrate(
        migrator.add_column('ConnectionInfo', 'ip_address', ipfield),
    )
    def screen_name(self):
        return self.twitter_user.screen_name

    @property
    def name(self):
        return self.twitter_user.name


# Create tables
for t in (TwitterUser, TelegramChat, Tweet, Subscription):
    t.create_table(fail_silently=True)


# Migrate new fields. TODO: think of some better migration mechanism
db = SqliteDatabase('peewee.db', timeout=10)
migrator = SqliteMigrator(db)
operations = [
    migrator.add_column('tweet', 'photo_url', Tweet.photo_url),
    migrator.add_column('twitteruser', 'last_fetched', TwitterUser.last_fetched),
    migrator.add_column('telegramchat', 'twitter_request_token', TelegramChat.twitter_request_token),
    migrator.add_column('telegramchat', 'twitter_token', TelegramChat.twitter_token),
    migrator.add_column('telegramchat', 'twitter_secret', TelegramChat.twitter_secret),
    migrator.add_column('telegramchat', 'timezone_name', TelegramChat.timezone_name),
    migrator.add_column('telegramchat', 'delete_soon', TelegramChat.delete_soon),
]
for op in operations:
    try:
        migrate(op)
    except OperationalError:
        pass
Example #35
0
 def Migrate(self):
     migrator = SqliteMigrator(self._db)
     migrate(
         migrator.drop_not_null('Contract', 'Account_id'),
         migrator.add_column('Address', 'IsWatchOnly', BooleanField(default=False)),
     )
Example #36
0
list_migrate = [
    ('License', 'code', CharField(default="")),
    ('Organization', 'devise', CharField(default="xof")),
    ('Organization', 'theme', CharField(default="Theme systeme")),
    ('Organization', 'is_login', BooleanField(default=True)),
    ('License', 'update_date', DateTimeField(default=NOW))]

try:
    from migrations import make_migrate
    list_migrate += make_migrate()
except Exception as e:
    print(e)

for x, y, z in list_migrate:
    try:
        migrate(migrator.add_column(x, y, z))
        print(x, " : ", y)
    except Exception as e:
        print(e)
        # raise e


class BaseModel(peewee.Model):

    class Meta:
        database = dbh

    @classmethod
    def all(cls):
        return list(cls.select())
Example #37
0
from playhouse.migrate import SqliteMigrator, migrate
import podcli

migrator = SqliteMigrator(podcli.db)

migrate(
    migrator.add_column('episodetable', 'summary',
                        podcli.EpisodeTable.summary))
class Tweet(Model):
    tw_id = BigIntegerField(unique=True)
    known_at = DateTimeField(default=datetime.datetime.now)
    text = TextField()
    created_at = DateTimeField()
    twitter_user = ForeignKeyField(TwitterUser, related_name="tweets")
    photo_url = TextField(default="")

    @property
    def screen_name(self):
        return self.twitter_user.screen_name

    @property
    def name(self):
        return self.twitter_user.name


# Migrate new fields. TODO: think of some better migration mechanism
db = SqliteDatabase("peewee.db")
migrator = SqliteMigrator(db)
operations = [
    migrator.add_column("tweet", "photo_url", Tweet.photo_url),
    migrator.add_column("twitteruser", "last_fetched", TwitterUser.last_fetched),
]
for op in operations:
    try:
        migrate(op)
    except OperationalError:
        pass