2 """Migrate from sqlite to postgresql
7 from subprocess import check_call, call
9 logger = logging.getLogger('pgmigrate')
11 if not 'DJANGO_SETTINGS_MODULE' in os.environ:
12 os.environ['DJANGO_SETTINGS_MODULE'] = 'htsworkflow.settings.felcat'
15 from django.conf import settings
16 from django.core import management
19 # needed for django 1.7
24 move_app_data('contenttypes')
26 move_app_data('admin')
28 move_app_data('eland_config')
29 move_app_data('samples')
30 move_app_data('experiments')
31 move_app_data('bcmagic')
32 move_app_data('inventory')
33 move_app_data('labels')
36 check_call(['kinit', '-l', '10m',
37 '-k', '-t', '/var/htsworkflow/jumpgate.keytab',
38 'jumpgate@WOLDLAB.CALTECH.EDU'])
40 def recreate_database():
41 dbserver = settings.DATABASES['default']['HOST']
42 dbname = settings.DATABASES['default']['NAME']
43 dbuser = settings.DATABASES['default']['USER']
44 call(['dropdb', '-U', dbuser, '-h', dbserver, dbname])
45 check_call(['createdb', '-U', dbuser, '-h', dbserver, dbname])
46 management.call_command('migrate', noinput=True)
47 #management.call_command('syncdb', '--noinput', '--no-initial-data')
49 def move_app_data(appname):
51 tempdir = tempfile.mkdtemp(prefix='htsw-migrate-')
52 logger.info('migrate dir: %s', tempdir)
54 with tempfile.NamedTemporaryFile(prefix=appname+'-', suffix='.json', dir=tempdir) as f:
55 logger.info('tempfile: %s', f.name)
56 management.call_command('dumpdata', appname, database='fctracker', stdout=f)
58 dumpstat = os.stat(f.name)
59 if dumpstat.st_size > 5:
60 management.call_command('loaddata', f.name)
65 if __name__ == "__main__":
66 logging.basicConfig(level=logging.INFO)