コード例 #1
0
ファイル: db.py プロジェクト: pombredanne/burlap
def migrate(app_name='', site=None, fake=0):
    """
    Wrapper around Django's migrate command.
    """
    print 'Migrating...'
    set_site(site or env.SITE)

    render_remote_paths()

    env.db_migrate_fake = '--fake' if int(fake) else ''
    if app_name:
        env.db_app_name = app_name
        run('export SITE=%(SITE)s; export ROLE=%(ROLE)s; cd %(remote_manage_dir)s; %(django_manage)s migrate %(db_app_name)s --noinput --delete-ghost-migrations %(db_migrate_fake)s -v 3 --traceback'
            % env)
    else:

        # First migrate apps in a specific order if given.
        for app_name in env.db_app_migration_order:
            env.db_app_name = app_name
            run('export SITE=%(SITE)s; export ROLE=%(ROLE)s; cd %(remote_manage_dir)s; %(django_manage)s migrate --noinput --delete-ghost-migrations %(db_migrate_fake)s %(db_app_name)s -v 3 --traceback'
                % env)

        # Then migrate everything else remaining.
        cmd = 'export SITE=%(SITE)s; export ROLE=%(ROLE)s; cd %(remote_manage_dir)s; %(django_manage)s migrate --noinput --delete-ghost-migrations %(db_migrate_fake)s -v 3 --traceback' % env
        #print cmd
        run(cmd)
コード例 #2
0
ファイル: db.py プロジェクト: pombredanne/burlap
def migrate(app_name="", site=None, fake=0):
    """
    Wrapper around Django's migrate command.
    """
    print "Migrating..."
    set_site(site or env.SITE)

    render_remote_paths()

    env.db_migrate_fake = "--fake" if int(fake) else ""
    if app_name:
        env.db_app_name = app_name
        run(
            "export SITE=%(SITE)s; export ROLE=%(ROLE)s; cd %(remote_manage_dir)s; %(django_manage)s migrate %(db_app_name)s --noinput --delete-ghost-migrations %(db_migrate_fake)s -v 3 --traceback"
            % env
        )
    else:

        # First migrate apps in a specific order if given.
        for app_name in env.db_app_migration_order:
            env.db_app_name = app_name
            run(
                "export SITE=%(SITE)s; export ROLE=%(ROLE)s; cd %(remote_manage_dir)s; %(django_manage)s migrate --noinput --delete-ghost-migrations %(db_migrate_fake)s %(db_app_name)s -v 3 --traceback"
                % env
            )

        # Then migrate everything else remaining.
        cmd = (
            "export SITE=%(SITE)s; export ROLE=%(ROLE)s; cd %(remote_manage_dir)s; %(django_manage)s migrate --noinput --delete-ghost-migrations %(db_migrate_fake)s -v 3 --traceback"
            % env
        )
        # print cmd
        run(cmd)
コード例 #3
0
ファイル: db.py プロジェクト: pombredanne/burlap
def createsuperuser(username='******', email=None, password=None, site=None):
    """
    Runs the Django createsuperuser management command.
    """
    set_site(site)

    render_remote_paths()

    env.db_createsuperuser_username = username
    env.db_createsuperuser_email = email or username
    run('export SITE=%(SITE)s; export ROLE=%(ROLE)s; cd %(remote_manage_dir)s; %(django_manage)s createsuperuser --username=%(db_createsuperuser_username)s --email=%(db_createsuperuser_email)s'
        % env)
コード例 #4
0
ファイル: dj.py プロジェクト: noeldvictor/burlap
def createsuperuser(username='******', email=None, password=None, site=None):
    """
    Runs the Django createsuperuser management command.
    """
    from burlap.dj import render_remote_paths
    
    set_site(site)
    
    render_remote_paths()
    
    env.db_createsuperuser_username = username
    env.db_createsuperuser_email = email or username
    run_or_dryrun('export SITE=%(SITE)s; export ROLE=%(ROLE)s; cd %(remote_manage_dir)s; %(django_manage)s createsuperuser --username=%(db_createsuperuser_username)s --email=%(db_createsuperuser_email)s' % env)
コード例 #5
0
ファイル: db.py プロジェクト: pombredanne/burlap
def syncdb(site=None, all=0, dryrun=0):
    """
    Wrapper around Django's syncdb command.
    """
    set_site(site)

    render_remote_paths()

    env.db_syncdb_all_flag = '--all' if int(all) else ''
    cmd = 'export SITE=%(SITE)s; export ROLE=%(ROLE)s; cd %(remote_manage_dir)s; %(django_manage)s syncdb --noinput %(db_syncdb_all_flag)s -v 3 --traceback' % env
    print 'cmd:', cmd
    if not int(dryrun):
        run(cmd)
コード例 #6
0
ファイル: dj.py プロジェクト: noeldvictor/burlap
def get_settings(site=None, role=None):
    """
    Retrieves the Django settings dictionary.
    """
    from burlap.common import get_verbose
    stdout = sys.stdout
    stderr = sys.stderr
    verbose = get_verbose()
    if not verbose:
        sys.stdout = StringIO()
        sys.stderr = StringIO()
    try:
        sys.path.insert(0, env.src_dir)
        if site and site.endswith('_secure'):
            site = site[:-7]
        site = site or env.SITE
        if verbose:
            print('get_settings.site:', env.SITE)
            print('get_settings.role:', env.ROLE)
        common.set_site(site)
        tmp_role = env.ROLE
        if role:
            env.ROLE = os.environ[ROLE] = role
        check_remote_paths(verbose=verbose)
        if verbose:
            print('get_settings.django_settings_module_template:',
                  env.django_settings_module_template)
            print('get_settings.django_settings_module:',
                  env.django_settings_module)
        env.django_settings_module = env.django_settings_module_template % env
        try:
            os.environ['SITE'] = env.SITE
            os.environ['ROLE'] = env.ROLE
            module = importlib.import_module(env.django_settings_module)

            # Works as long as settings.py doesn't also reload anything.
            import imp
            imp.reload(module)

        except ImportError as e:
            print('Warning: Could not import settings for site "%s": %s' %
                  (site, e))
            traceback.print_exc(file=sys.stdout)
            #raise # breaks *_secure pseudo sites
            return
        finally:
            env.ROLE = os.environ[ROLE] = tmp_role
    finally:
        sys.stdout = stdout
        sys.stderr = stderr
    return module
コード例 #7
0
ファイル: db.py プロジェクト: pombredanne/burlap
def createsuperuser(username="******", email=None, password=None, site=None):
    """
    Runs the Django createsuperuser management command.
    """
    set_site(site)

    render_remote_paths()

    env.db_createsuperuser_username = username
    env.db_createsuperuser_email = email or username
    run(
        "export SITE=%(SITE)s; export ROLE=%(ROLE)s; cd %(remote_manage_dir)s; %(django_manage)s createsuperuser --username=%(db_createsuperuser_username)s --email=%(db_createsuperuser_email)s"
        % env
    )
コード例 #8
0
ファイル: dj.py プロジェクト: noeldvictor/burlap
def database_files_dump(site=None):
    """
    Runs the Django management command to export files stored in the database to the filesystem.
    Assumes the app django_database_files is installed.
    """
    from burlap.dj import render_remote_paths
    set_site(site or env.SITE)
    
    render_remote_paths()
    
    cmd = 'export SITE=%(SITE)s; export ROLE=%(ROLE)s; cd %(remote_manage_dir)s; %(django_manage)s database_files_dump' % env
    if env.is_local:
        local_or_dryrun(cmd)
    else:
        run_or_dryrun(cmd)
コード例 #9
0
ファイル: dj.py プロジェクト: noeldvictor/burlap
def database_files_dump(site=None):
    """
    Runs the Django management command to export files stored in the database to the filesystem.
    Assumes the app django_database_files is installed.
    """
    from burlap.dj import render_remote_paths
    set_site(site or env.SITE)

    render_remote_paths()

    cmd = 'export SITE=%(SITE)s; export ROLE=%(ROLE)s; cd %(remote_manage_dir)s; %(django_manage)s database_files_dump' % env
    if env.is_local:
        local_or_dryrun(cmd)
    else:
        run_or_dryrun(cmd)
コード例 #10
0
ファイル: dj.py プロジェクト: noeldvictor/burlap
def get_settings(site=None, role=None):
    """
    Retrieves the Django settings dictionary.
    """
    from burlap.common import get_verbose
    stdout = sys.stdout
    stderr = sys.stderr
    verbose = get_verbose()
    if not verbose:
        sys.stdout = StringIO()
        sys.stderr = StringIO()
    try:
        sys.path.insert(0, env.src_dir)
        if site and site.endswith('_secure'):
            site = site[:-7]
        site = site or env.SITE
        if verbose:
            print('get_settings.site:',env.SITE)
            print('get_settings.role:',env.ROLE)
        common.set_site(site)
        tmp_role = env.ROLE
        if role:
            env.ROLE = os.environ[ROLE] = role
        check_remote_paths(verbose=verbose)
        if verbose:
            print('get_settings.django_settings_module_template:',env.django_settings_module_template)
            print('get_settings.django_settings_module:',env.django_settings_module)
        env.django_settings_module = env.django_settings_module_template % env
        try:
            os.environ['SITE'] = env.SITE
            os.environ['ROLE'] = env.ROLE
            module = importlib.import_module(env.django_settings_module)
    
            # Works as long as settings.py doesn't also reload anything.
            import imp
            imp.reload(module)
            
        except ImportError as e:
            print('Warning: Could not import settings for site "%s": %s' % (site, e))
            traceback.print_exc(file=sys.stdout)
            #raise # breaks *_secure pseudo sites
            return
        finally:
            env.ROLE = os.environ[ROLE] = tmp_role
    finally:
        sys.stdout = stdout
        sys.stderr = stderr
    return module
コード例 #11
0
ファイル: db.py プロジェクト: pombredanne/burlap
def syncdb(site=None, all=0, dryrun=0):
    """
    Wrapper around Django's syncdb command.
    """
    set_site(site)

    render_remote_paths()

    env.db_syncdb_all_flag = "--all" if int(all) else ""
    cmd = (
        "export SITE=%(SITE)s; export ROLE=%(ROLE)s; cd %(remote_manage_dir)s; %(django_manage)s syncdb --noinput %(db_syncdb_all_flag)s -v 3 --traceback"
        % env
    )
    print "cmd:", cmd
    if not int(dryrun):
        run(cmd)
コード例 #12
0
ファイル: db.py プロジェクト: pombredanne/burlap
def install_fixtures(name, site=None):
    """
    Installs a set of Django fixtures.
    """
    set_site(site)

    render_remote_paths()

    fixtures_paths = env.db_fixture_sets.get(name, [])
    for fixture_path in fixtures_paths:
        env.db_fq_fixture_path = os.path.join(env.remote_app_src_package_dir,
                                              fixture_path)
        print 'Loading %s...' % (env.db_fq_fixture_path, )
        if not env.is_local and not files.exists(env.db_fq_fixture_path):
            put(local_path=env.db_fq_fixture_path,
                remote_path='/tmp/data.json',
                use_sudo=True)
            env.db_fq_fixture_path = env.put_remote_path
        cmd = 'export SITE=%(SITE)s; export ROLE=%(ROLE)s; cd %(remote_manage_dir)s; %(django_manage)s loaddata %(db_fq_fixture_path)s' % env
        print cmd
        run(cmd)
コード例 #13
0
ファイル: db.py プロジェクト: pombredanne/burlap
def install_fixtures(name, site=None):
    """
    Installs a set of Django fixtures.
    """
    set_site(site)

    render_remote_paths()

    fixtures_paths = env.db_fixture_sets.get(name, [])
    for fixture_path in fixtures_paths:
        env.db_fq_fixture_path = os.path.join(env.remote_app_src_package_dir, fixture_path)
        print "Loading %s..." % (env.db_fq_fixture_path,)
        if not env.is_local and not files.exists(env.db_fq_fixture_path):
            put(local_path=env.db_fq_fixture_path, remote_path="/tmp/data.json", use_sudo=True)
            env.db_fq_fixture_path = env.put_remote_path
        cmd = (
            "export SITE=%(SITE)s; export ROLE=%(ROLE)s; cd %(remote_manage_dir)s; %(django_manage)s loaddata %(db_fq_fixture_path)s"
            % env
        )
        print cmd
        run(cmd)
コード例 #14
0
ファイル: dj.py プロジェクト: noeldvictor/burlap
def install_fixtures(name, site=None):
    """
    Installs a set of Django fixtures.
    """
    from burlap.dj import render_remote_paths
    set_site(site)
    
    render_remote_paths()
    
    fixtures_paths = env.db_fixture_sets.get(name, [])
    for fixture_path in fixtures_paths:
        env.db_fq_fixture_path = os.path.join(env.remote_app_src_package_dir, fixture_path)
        print('Loading %s...' % (env.db_fq_fixture_path,))
        if not env.is_local and not files.exists(env.db_fq_fixture_path):
            put_or_dryrun(
                local_path=env.db_fq_fixture_path,
                remote_path='/tmp/data.json',
                use_sudo=True,
                )
            env.db_fq_fixture_path = env.put_remote_path
        cmd = 'export SITE=%(SITE)s; export ROLE=%(ROLE)s; cd %(remote_manage_dir)s; %(django_manage)s loaddata %(db_fq_fixture_path)s' % env
        print(cmd)
        run_or_dryrun(cmd)