Пример #1
0
 def handle(self, *args, **options):
     if 'test' not in sys.argv or not settings.FIXTURE_DIRS:
         print 'ERROR: not in test env'
         exit(1)
     HandleSouth.disable()
     call_command('syncdb', interactive=False)
     HandleSouth.enable()
     # migration already done
     call_command('loaddata', 'db_south', verbosity='0')
     call_command('loaddata', 'db_user', verbosity='0')
     for app in HandleSouth.get_apps():
         if not self.has_fixtures(app):
             continue
         print 'loading fixtures: %s' % app
         call_command('loaddata', 'db_%s' % app, verbosity='0')
         nb = MigrationHistory.objects.filter(app_name=app).count()
         files = os.listdir('%s/%s/migrations' % (settings.ROOT_DIR, app))
         migrations = [migration for migration in files
                       if self.regex.match(migration)]
         migrations.sort()
         for migration in migrations[nb:]:
             # XXX schemamigration will always be done by the syncdb command
             #     they shouldn't be done again: e.g raise table not found
             #     datamigration are 'manually' created unlike
             #     schemamigration so a schemamigration should always
             #     contain '_auto__' in its name
             if '_auto__' in migration:
                 call_command('migrate', app, migration, fake=True)
             else:
                 call_command('migrate', app, migration)
         self.migrate(app)
     # update the done migration
     self.migrate('south')
Пример #2
0
def main():
    argv = sys.argv

    # to set DJANGO_SETTINGS_MODULE which is mandatory to use django
    for idx in range(len(sys.argv)):
        if sys.argv[idx].startswith('--settings'):
            setting = sys.argv.pop(idx)
            if '=' in setting:
                setting = setting.split('=', 1)[1]
            else:
                setting = sys.argv.pop(idx)
            os.environ.setdefault('DJANGO_SETTINGS_MODULE', setting)
            break
    if 'DJANGO_SETTINGS_MODULE' not in os.environ:
        os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'baobab.settings')

    # XXX fixe me need the settings to be configure
    from baobab.cron import exec_cron

    if len(argv) < 2:
        execute_from_command_line(argv)
        sys.exit(0)

    if argv[1] == 'syncdb':
        # will create the db, run all migration, add a default user
        execute_from_command_line(
            [argv[0], 'syncdb', '--migrate', '--noinput'])
        default_user()
    elif argv[1] == 'setup-dev':
        HandleSouth.disable()
        fixtures = []
        for rep in settings.FIXTURE_DIRS:
            tmp = map(lambda x: x.split('.', 1)[0], os.listdir(rep))
            fixtures.extend(filter(lambda x: x.startswith('db_'), tmp))
            call_command('syncdb', interactive=False)
            default_user()
            print 'loading fixtures ...'
            call_command('loaddata', *fixtures, verbosity=0)
    elif argv[1] == 'test':
        apps = [
            name.split('.', 1)[1] for name in settings.INSTALLED_APPS
            if name.startswith('baobab.')
        ]
        if not [arg for arg in sys.argv if arg.split('.')[0] in apps]:
            sys.argv.extend(apps)
        execute_from_command_line(sys.argv)
    elif len(argv) > 2 and argv[1] == 'migrate' and argv[2] == 'fixtures':
        sys.argv.append('test')
        execute_from_command_line([argv[0], 'migrate_fixtures'])
    elif not exec_cron(argv[1]):
        execute_from_command_line(argv)
Пример #3
0
def main():
    argv = sys.argv

    # to set DJANGO_SETTINGS_MODULE which is mandatory to use django
    for idx in range(len(sys.argv)):
        if sys.argv[idx].startswith('--settings'):
            setting = sys.argv.pop(idx)
            if '=' in setting:
                setting = setting.split('=', 1)[1]
            else:
                setting = sys.argv.pop(idx)
            os.environ.setdefault('DJANGO_SETTINGS_MODULE', setting)
            break
    if 'DJANGO_SETTINGS_MODULE' not in os.environ:
        os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'baobab.settings')

    # XXX fixe me need the settings to be configure
    from baobab.cron import exec_cron

    if len(argv) < 2:
        execute_from_command_line(argv)
        sys.exit(0)

    if argv[1] == 'syncdb':
        # will create the db, run all migration, add a default user
        execute_from_command_line([argv[0],
                                   'syncdb',
                                   '--migrate',
                                   '--noinput'])
        default_user()
    elif argv[1] == 'setup-dev':
        HandleSouth.disable()
        fixtures = []
        for rep in settings.FIXTURE_DIRS:
            tmp = map(lambda x: x.split('.', 1)[0], os.listdir(rep))
            fixtures.extend(filter(lambda x: x.startswith('db_'), tmp))
            call_command('syncdb', interactive=False)
            default_user()
            print 'loading fixtures ...'
            call_command('loaddata', *fixtures, verbosity=0)
    elif argv[1] == 'test':
        apps = [name.split('.', 1)[1] for name in settings.INSTALLED_APPS
                if name.startswith('baobab.')]
        if not [arg for arg in sys.argv if arg.split('.')[0] in apps]:
            sys.argv.extend(apps)
        execute_from_command_line(sys.argv)
    elif len(argv) > 2 and argv[1] == 'migrate' and argv[2] == 'fixtures':
        sys.argv.append('test')
        execute_from_command_line([argv[0], 'migrate_fixtures'])
    elif not exec_cron(argv[1]):
        execute_from_command_line(argv)