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)
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)
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)
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)
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)
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
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 )
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)
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
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)
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)
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)
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)