コード例 #1
0
def compile_migrations(migrator, models, reverse=False):
    """Compile migrations for given models."""
    source = migrator.orm.values()
    if reverse:
        source, models = models, source

    migrations = diff_many(models, source, migrator, reverse=reverse)
    if not migrations:
        return False

    migrations = NEWLINE + NEWLINE.join('\n\n'.join(migrations).split('\n'))
    return CLEAN_RE.sub('\n', migrations)
コード例 #2
0
ファイル: router.py プロジェクト: klen/peewee_migrate
def compile_migrations(migrator, models, reverse=False):
    """Compile migrations for given models."""
    source = migrator.orm.values()
    if reverse:
        source, models = models, source

    migrations = diff_many(models, source, migrator, reverse=reverse)
    if not migrations:
        return False

    migrations = NEWLINE + NEWLINE.join('\n\n'.join(migrations).split('\n'))
    return CLEAN_RE.sub('\n', migrations)
コード例 #3
0
    def create(self, name='auto', auto=False):
        """Create a migration."""
        migrate = rollback = ''
        if auto:
            if isinstance(auto, str):
                try:
                    auto = import_module(auto)
                except ImportError:
                    return self.logger.error('Invalid models module: %s', auto)

            if isinstance(auto, ModuleType):
                auto = list(
                    filter(lambda m: isinstance(m, type) and issubclass(
                        m, pw.Model)),
                    (getattr(auto, model) for model in dir(auto)))  # noqa

            for migration in self.diff:
                self.run_one(migration, self.migrator)

            models1 = auto
            models2 = list(self.migrator.orm.values())

            migrate = diff_many(models1, models2)
            if not migrate:
                return self.logger.warn('No changes has found.')

            migrate = NEWLINE + NEWLINE.join('\n\n'.join(migrate).split('\n'))
            migrate = CLEAN_RE.sub('\n', migrate)

            rollback = diff_many(models2, models1)
            rollback = NEWLINE + NEWLINE.join(
                '\n\n'.join(rollback).split('\n'))
            rollback = CLEAN_RE.sub('\n', rollback)

        self.logger.info('Create a migration "%s"', name)
        path = self._create(name, migrate, rollback)
        self.logger.info('Migration has created %s', path)
        return path
コード例 #4
0
    def create(self, name='auto', auto=False):
        """Create a migration."""
        migrate = rollback = ''
        if auto:
            if isinstance(auto, str):
                try:
                    auto = import_module(auto)
                except ImportError:
                    return self.logger.error('Invalid models module: %s', auto)

            if isinstance(auto, ModuleType):
                auto = list(filter(
                    lambda m: isinstance(m, type) and issubclass(m, pw.Model)),
                    (getattr(auto, model) for model in dir(auto)))  # noqa

            for migration in self.diff:
                self.run_one(migration, self.migrator)

            models1 = auto
            models2 = list(self.migrator.orm.values())

            migrate = diff_many(models1, models2)
            if not migrate:
                return self.logger.warn('No changes has found.')

            migrate = NEWLINE + NEWLINE.join('\n\n'.join(migrate).split('\n'))
            migrate = CLEAN_RE.sub('\n', migrate)

            rollback = diff_many(models2, models1)
            rollback = NEWLINE + NEWLINE.join('\n\n'.join(rollback).split('\n'))
            rollback = CLEAN_RE.sub('\n', rollback)

        self.logger.info('Create a migration "%s"', name)
        path = self._create(name, migrate, rollback)
        self.logger.info('Migration has created %s', path)
        return path