Source code for aiida.backends.profile

# -*- coding: utf-8 -*-
###########################################################################
# Copyright (c), The AiiDA team. All rights reserved.                     #
# This file is part of the AiiDA code.                                    #
#                                                                         #
# The code is hosted on GitHub at https://github.com/aiidateam/aiida_core #
# For further information on the license, see the LICENSE.txt file        #
# For further information please visit http://www.aiida.net               #
###########################################################################
from __future__ import division
from __future__ import print_function
from __future__ import absolute_import

from aiida.backends import settings
from aiida.common.exceptions import InvalidOperation


# Possible choices for backend
BACKEND_DJANGO = 'django'
BACKEND_SQLA = 'sqlalchemy'


[docs]def load_profile(profile=None): """ Load the profile. This function is called by load_dbenv and SHOULD NOT be called by the user by hand. """ from aiida.common.log import configure_logging from aiida.manage.configuration import get_config if settings.LOAD_PROFILE_CALLED: raise InvalidOperation('You cannot call load_profile multiple times!') config = get_config() settings.LOAD_PROFILE_CALLED = True if settings.AIIDADB_PROFILE is not None: if profile is not None and profile != settings.AIIDADB_PROFILE: raise ValueError('Error in profile loading') else: if profile is None: profile = config.default_profile_name settings.AIIDADB_PROFILE = profile # Reconfigure the logging to make sure that profile specific logging configuration options are taken into account. # Also set `with_orm=True` to make sure that the `DBLogHandler` is configured as well. configure_logging(with_orm=True) profile = config.get_profile(profile) # Check if AIIDADB_BACKEND is set and if not error (with message) # Migration script should put it in profile (config.json) settings.BACKEND = profile.dictionary.get('AIIDADB_BACKEND', BACKEND_DJANGO)
[docs]def is_profile_loaded(): """ Return True if the profile has already been loaded """ return settings.LOAD_PROFILE_CALLED