def get_last_daemon_timestamp(task_name, when='stop'): """ Return the last time stored in the DB that the daemon executed the given task. :param task_name: the task for which we want the information. It has to be one of the keys of the ``aiida.backends.djsite.settings.settings.djcelery_tasks`` dictionary. :param when: can either be 'start' (to know when the task started) or 'stop' (to know when the task ended) :return: a datetime.datetime object. Return None if no information is found in the DB. """ try: actual_task_name = celery_tasks[task_name] except KeyError: raise ValueError("Unknown value for '{}', not found in the " "djcelery_tasks dictionary".format(task_name)) try: return get_global_setting('daemon|task_{}|{}'.format( when, actual_task_name)) except KeyError: # No such global setting found return None
def get_global_setting(key): if settings.BACKEND == BACKEND_DJANGO: from aiida.backends.djsite.globalsettings import get_global_setting elif settings.BACKEND == BACKEND_SQLA: from aiida.backends.sqlalchemy.globalsettings import get_global_setting else: raise Exception("unknown backend {}".format(settings.BACKEND)) return get_global_setting(key)
def get_db_schema_version(): """ Get the current schema version stored in the DB. Return None if it is not stored. """ try: return get_global_setting('db|schemaversion') except KeyError: return None
def get_db_schema_version(): """ Get the current schema version stored in the DB. Return None if it is not stored. """ from aiida.backends.utils import get_global_setting try: return get_global_setting('db|schemaversion') except KeyError: return None
def get_daemon_user(): """ Return the username (email) of the user that should run the daemon, or the default AiiDA user in case no explicit configuration is found in the DbSetting table. """ from aiida.backends.djsite.globalsettings import get_global_setting from aiida.common.setup import DEFAULT_AIIDA_USER try: return get_global_setting('daemon|user') except KeyError: return DEFAULT_AIIDA_USER
def get_global_setting(key): if settings.BACKEND == BACKEND_DJANGO: from aiida.backends.djsite.globalsettings import get_global_setting from django.db import connection if 'db_dbsetting' not in connection.introspection.table_names(): raise KeyError("No table found") elif settings.BACKEND == BACKEND_SQLA: from sqlalchemy.engine import reflection from aiida.backends import sqlalchemy as sa inspector = reflection.Inspector.from_engine(sa.session.bind) if 'db_dbsetting' not in inspector.get_table_names(): raise KeyError("No table found") from aiida.backends.sqlalchemy.globalsettings import get_global_setting else: raise Exception("unknown backend {}".format(settings.BACKEND)) return get_global_setting(key)
def test_settings_methods(self): from aiida.backends.djsite.globalsettings import ( get_global_setting_description, get_global_setting, set_global_setting, del_global_setting) set_global_setting(key="aaa", value={'b': 'c'}, description="pippo") self.assertEqual(get_global_setting('aaa'), {'b': 'c'}) self.assertEqual(get_global_setting_description('aaa'), "pippo") self.assertEqual(get_global_setting('aaa.b'), 'c') self.assertEqual(get_global_setting_description('aaa.b'), "") del_global_setting('aaa') with self.assertRaises(KeyError): get_global_setting('aaa.b') with self.assertRaises(KeyError): get_global_setting('aaa')
def get_backend_type(): """ Set the schema version stored in the DB. Use only if you know what you are doing. """ return get_global_setting('db|backend')