Пример #1
0
def run_migrations():
    from django.core.management import call_command
    from balsam.django_config.db_index import refresh_db_index
    setup()
    print(f"DB settings:", settings.DATABASES['default'])
    call_command('makemigrations', interactive=True, verbosity=2)
    call_command('migrate', interactive=True, verbosity=2)
    refresh_db_index()
    try:
        from balsam.core.models import BalsamJob
        j = BalsamJob()
        j.save()
        j.delete()
    except:
        print("BalsamJob table not properly created")
        raise
    else:
        print("BalsamJob table created successfully")
Пример #2
0
def which(args):
    from balsam.django_config.db_index import refresh_db_index
    from balsam.django_config.serverinfo import ServerInfo
    import pprint

    if args.list:
        pprint.pprint(refresh_db_index())
    elif args.name:
        db_list = refresh_db_index()

        # Try exact match first
        name = os.path.abspath(os.path.expanduser(args.name))
        if name in db_list:
            print(name)
            sys.exit(0)

        matches = [db for db in db_list if args.name in db]
        if len(matches) == 0:
            sys.stderr.write(f"No DB matching {args.name} is cached\n\n")
            sys.exit(1)
        elif len(matches) > 1:
            sys.stderr.write(
                f"DB name {args.name} is too ambiguous; multiple matches\n"
                "Please give a longer unique substring\n\n")
            sys.exit(1)
        else:
            print(matches[0])
            sys.exit(0)
    else:
        db_path = os.environ.get('BALSAM_DB_PATH')
        if db_path:
            print("Current Balsam DB:", db_path)
            dat = ServerInfo(os.environ['BALSAM_DB_PATH']).data
            pprint.pprint(dat)
        else:
            print("BALSAM_DB_PATH is not set")
            print(
                'Use "source balsamactivate" to activate one of these existing databases:'
            )
            pprint.pprint(refresh_db_index())
Пример #3
0
def get_database_paths(verbose=True):
    """
    Prints the paths for existing balsam databases
    """
    try:
        from balsam.django_config.db_index import refresh_db_index
        databasepaths = refresh_db_index()
    except:
        databasepaths = None
    if verbose:
        if len(databasepaths) > 0:
            print(f'Found {len(databasepaths)} balsam database location')
            for db in databasepaths:
                print(db)
        else:
            print('No balsam database found')
    return databasepaths
Пример #4
0
def get_databases(verbose=True):
    """
    Return balsam databases. If verbose, print.
    """
    from balsam import django_config
    from balsam.django_config.db_index import refresh_db_index
    from ipywidgets import interact
    import os
    databasepaths = []
    try:
        databasepaths.extend(refresh_db_index())
        if verbose:
            print(
                f'There are {len(databasepaths)} Balsam databases available:')
            for i, db in enumerate(databasepaths):
                print(f'{i}: {db}')
    except Excpetion as e:
        print(
            '🛑 Exception caught during balsam.django_config.db_index.refresh_db_index:'
        )
        print(e, '\n')
    return databasepaths