Просмотр исходного кода

Properly read dburi upon starting

oz123 10 лет назад
Родитель
Сommit
019a29e954
3 измененных файлов с 8 добавлено и 50 удалено
  1. 4 10
      pwman/__init__.py
  2. 1 31
      pwman/data/factory.py
  3. 3 9
      scripts/pwman3

+ 4 - 10
pwman/__init__.py

@@ -26,7 +26,6 @@ import re
 import colorama
 from .util import config
 from pwman.data import factory
-from pwman.data.database import __DB_FORMAT__
 
 appname = "pwman3"
 
@@ -126,15 +125,10 @@ def get_conf_options(args, OSX):
     set_win_colors(configp)
     set_db(args, configp)
     set_umask(configp)
-    dbtype = configp.get_value("Database", "type")
-    return xselpath, dbtype, configp
+    dburi = configp.get_value("Database", "dburi")
+    return xselpath, dburi, configp
 
 
-def get_db_version(config, dbtype, args):
-    # This method is seriously biased towards SQLite.
-    # TODO: make this more Postgresql\Network Database friendly
-    if os.path.exists(config.get_value("Database", "dburi")):
-        dbver = factory.check_db_version(config.get_value("Database", "dburi"))
-    else:
-        dbver = __DB_FORMAT__
+def get_db_version(config, args):
+    dbver = factory.check_db_version(config.get_value("Database", "dburi"))
     return dbver

+ 1 - 31
pwman/data/factory.py

@@ -53,40 +53,10 @@ def check_db_version(dburi):
         except ValueError:
             return 0.3
     # TODO: implement version checks for other supported DBs.
-    if dbtype == "Postgresql":
+    if dbtype == "postgresql":
         ver = sqlite.PostgresqlDatabase.check_db_version(dburi)
 
 
-#def create(dbtype, version=None, filename=None):
-#    """
-#    create(params) -> Database
-#    Create a Database instance.
-#    'type' can only be 'SQLite' at the moment
-#    """
-#    if dbtype == "sqlite":
-#        from pwman.data.drivers import sqlite
-#        if str(version) == '0.6':
-#            db = sqlite.SQLite(filename)
-#        else:
-#            db = sqlite.SQLite(filename, dbformat=version)
-#
-#    elif dbtype == "postgresql":  # pragma: no cover
-#        try:
-#            from pwman.data.drivers import postgresql
-#            db = postgresql.PostgresqlDatabase()
-#        except ImportError:
-#            raise DatabaseException("python-psycopg2 not installed")
-#    elif dbtype == "mysql":  # pragma: no cover
-#        try:
-#            from pwman.data.drivers import mysql
-#            db = mysql.MySQLDatabase()
-#        except ImportError:
-#            raise DatabaseException("python-mysqldb not installed")
-#    else:
-#        raise DatabaseException("Unknown database type specified")
-#    return db
-
-
 def createdb(dburi, version):
     dburi = urlparse(dburi)
     dbtype = dburi.scheme

+ 3 - 9
scripts/pwman3

@@ -36,17 +36,11 @@ if sys.version_info.major > 2:
 def main(args):
     PwmanCli, OSX = get_ui_platform(sys.platform)
     xselpath, dbtype, config = get_conf_options(args, OSX)
-    dbver = get_db_version(config, dbtype, args)
+    dbver = get_db_version(config, args)
     CryptoEngine.get()
 
-    # TODO: filename should be update to dburi
-    # then factory create should use urlparse to find the
-    # correct db type
-    # types : sqlite, mysql, postgresql
-    # this requires changes in Config, documentation, command line script
-    # and finally in data.factory
-    fname = config.get_value('Database', 'filename')
-    db = pwman.data.factory.createdb(dbtype, dbver, fname)
+    dburi = config.get_value('Database', 'dburi')
+    db = pwman.data.factory.createdb(dburi, dbver)
 
     if args.import_file:
         importer = Importer((args, config, db))