diff options
Diffstat (limited to '')
-rw-r--r-- | portato/db/__init__.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/portato/db/__init__.py b/portato/db/__init__.py new file mode 100644 index 0000000..05dbfcf --- /dev/null +++ b/portato/db/__init__.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +# +# File: portato/db/__init__.py +# This file is part of the Portato-Project, a graphical portage-frontend. +# +# Copyright (C) 2006-2009 René 'Necoro' Neumann +# This is free software. You may redistribute copies of it under the terms of +# the GNU General Public License version 2. +# There is NO WARRANTY, to the extent permitted by law. +# +# Written by René 'Necoro' Neumann <necoro@necoro.net> + +from __future__ import absolute_import + +from ..session import Session, SectionDict +from ..helper import debug, warning + +_SESSION = None +_TYPE = None + +def _set_type(t): + global _TYPE + _TYPE = t + +def Database(): + global _SESSION, _TYPE + + if _SESSION is None: + _SESSION = Session("db.cfg", name = "DB") + _SESSION.add_handler((["type"], _set_type, lambda: _TYPE), default = ["sql"]) + _SESSION.load() + + if _TYPE == "sql": + debug("Using SQLDatabase") + try: + from .sql import SQLDatabase + except ImportError: + warning(_("Cannot load SQLDatabase.")) + _TYPE = "dict" + return Database() + else: + return SQLDatabase(SectionDict(_SESSION, "SQL")) + + elif _TYPE == "dict": + debug("Using DictDatabase") + from .dict import DictDatabase + return DictDatabase(SectionDict(_SESSION, "dict")) |