diff --git a/src/caosdb/__init__.py b/src/caosdb/__init__.py index b86fcd638c7321c2e0464b603fb736e3adfbafe3..ba1b535fe95b61bb3f28c63b78ba2fff69b5b738 100644 --- a/src/caosdb/__init__.py +++ b/src/caosdb/__init__.py @@ -45,15 +45,9 @@ from caosdb.common.models import (ACL, ALL, FIX, NONE, OBLIGATORY, RECOMMENDED, Query, QueryTemplate, Record, RecordType, delete, execute_query, get_global_acl, get_known_permissions, raise_errors) -from caosdb.configuration import configure, get_config +from caosdb.configuration import configure, get_config,_read_config_files from caosdb.connection.connection import configure_connection, get_connection from caosdb.version import version as __version__ from caosdb.exceptions import * -# read configuration these files - -if "PYCAOSDBINI" in environ: - configure(expanduser(environ["PYCAOSDBINI"])) -else: - configure(expanduser('~/.pycaosdb.ini')) -configure(join(getcwd(), "pycaosdb.ini")) +_read_config_files("PYCAOSDBINI") \ No newline at end of file diff --git a/src/caosdb/configuration.py b/src/caosdb/configuration.py index 4d0797844182b8465ef5f97a869e31ee4fcaf47d..70031ce66153b3dbd54f89a6136d0dcbb9afb938 100644 --- a/src/caosdb/configuration.py +++ b/src/caosdb/configuration.py @@ -28,6 +28,9 @@ except ImportError: # python3 from configparser import ConfigParser +from os import environ, getcwd +from os.path import expanduser, join,isfile + def _reset_config(): global _pycaosdbconf @@ -49,3 +52,22 @@ def configure(inifile): def get_config(): return _pycaosdbconf + +def _read_config_files(env = "PYCAOSDBINI"): + """Function to read config files from different paths + + Args: + env (string): environment string + + Returns: + [list]: list with successfully parsed ini-files + """ + return_var = [] + if env in environ: + return_var.extend(configure(expanduser(environ[env]))) + else: + return_var.extend(configure(expanduser('~/.pycaosdb.ini'))) + + if isfile(join(getcwd(), "pycaosdb.ini")): + return_var.extend(configure(join(getcwd(), "pycaosdb.ini"))) + return return_var diff --git a/unittests/test_configuration.py b/unittests/test_configuration.py index 76445b6f262120d6a29c73527a9bf042f85f8a05..ab6cd4827bd87f555d1c79be34cc1c97ccbbee40 100644 --- a/unittests/test_configuration.py +++ b/unittests/test_configuration.py @@ -27,14 +27,22 @@ from pytest import raises def test_config_ini_via_envvar(): - from os import environ - from os.path import expanduser + from os import environ,getcwd,remove + from os.path import expanduser, isfile,join with raises(KeyError): environ["PYCAOSDBINI"] - + environ["PYCAOSDBINI"] = "bla bla" assert environ["PYCAOSDBINI"] == "bla bla" - assert db.configuration.configure(environ["PYCAOSDBINI"]) == [] + assert not expanduser(environ["PYCAOSDBINI"]) in db.configuration._read_config_files("PYCAOSDBINI") environ["PYCAOSDBINI"] = "~/.pycaosdb.ini" - assert db.configuration.configure(expanduser(environ["PYCAOSDBINI"])) == [expanduser("~/.pycaosdb.ini")] + if isfile(expanduser(environ["PYCAOSDBINI"])): + assert expanduser("~/.pycaosdb.ini") in db.configuration._read_config_files("PYCAOSDBINI") + + if isfile(join(getcwd(), )): + assert join(getcwd(), "pycaosdb.ini") in db.configuration._read_config_files("PYCAOSDBINI") + else: + open("pycaosdb.ini", 'a').close() #create temporary ini file + assert join(getcwd(), "pycaosdb.ini") in db.configuration._read_config_files("PYCAOSDBINI") + remove("pycaosdb.ini")