changeset 3475324686b2 in trytond:default
details: https://hg.tryton.org/trytond?cmd=changeset;node=3475324686b2
description:
        Add database default name configuration

        Some user may need to customize the default name used to run operation 
without
        proper database name.

        issue9121
        review273021002
diffstat:

 CHANGELOG                              |  1 +
 doc/topics/configuration.rst           |  6 ++++++
 trytond/backend/postgresql/database.py |  7 ++++---
 trytond/backend/sqlite/database.py     |  6 ++++--
 4 files changed, 15 insertions(+), 5 deletions(-)

diffs (90 lines):

diff -r 852e50ac7da3 -r 3475324686b2 CHANGELOG
--- a/CHANGELOG Wed Apr 01 23:52:08 2020 +0200
+++ b/CHANGELOG Wed Apr 01 23:56:17 2020 +0200
@@ -1,3 +1,4 @@
+* Add default database name configuration
 * Add retry option to report convert
 * Add depends fields on view_attributes
 * Simplify trigger action
diff -r 852e50ac7da3 -r 3475324686b2 doc/topics/configuration.rst
--- a/doc/topics/configuration.rst      Wed Apr 01 23:52:08 2020 +0200
+++ b/doc/topics/configuration.rst      Wed Apr 01 23:56:17 2020 +0200
@@ -139,6 +139,12 @@
 
 Default: `en`
 
+default_name
+~~~~~~~~~~~~
+
+The name of the database to use for operations without a database name.
+Default: `template1` for PostgreSQL, `:memory:` for SQLite.
+
 request
 -------
 
diff -r 852e50ac7da3 -r 3475324686b2 trytond/backend/postgresql/database.py
--- a/trytond/backend/postgresql/database.py    Wed Apr 01 23:52:08 2020 +0200
+++ b/trytond/backend/postgresql/database.py    Wed Apr 01 23:56:17 2020 +0200
@@ -46,6 +46,7 @@
 _timeout = config.getint('database', 'timeout')
 _minconn = config.getint('database', 'minconn', default=1)
 _maxconn = config.getint('database', 'maxconn', default=64)
+_default_name = config.get('database', 'default_name', default='template1')
 
 
 def unescape_quote(s):
@@ -151,7 +152,7 @@
         'TIMESTAMP': SQLType('TIMESTAMP', 'TIMESTAMP(6)'),
         }
 
-    def __new__(cls, name='template1'):
+    def __new__(cls, name=_default_name):
         with cls._lock:
             now = datetime.now()
             databases = cls._databases[os.getpid()]
@@ -163,7 +164,7 @@
             if name in databases:
                 inst = databases[name]
             else:
-                if name == 'template1':
+                if name == _default_name:
                     minconn = 0
                 else:
                     minconn = _minconn
@@ -176,7 +177,7 @@
             inst._last_use = datetime.now()
             return inst
 
-    def __init__(self, name='template1'):
+    def __init__(self, name=_default_name):
         super(Database, self).__init__(name)
 
     @classmethod
diff -r 852e50ac7da3 -r 3475324686b2 trytond/backend/sqlite/database.py
--- a/trytond/backend/sqlite/database.py        Wed Apr 01 23:52:08 2020 +0200
+++ b/trytond/backend/sqlite/database.py        Wed Apr 01 23:56:17 2020 +0200
@@ -30,6 +30,8 @@
 __all__ = ['Database', 'DatabaseIntegrityError', 'DatabaseOperationalError']
 logger = logging.getLogger(__name__)
 
+_default_name = config.get('database', 'default_name', default=':memory:')
+
 
 class SQLiteExtract(Function):
     __slots__ = ()
@@ -321,13 +323,13 @@
         'BOOL': SQLType('BOOLEAN', 'BOOLEAN'),
         }
 
-    def __new__(cls, name=':memory:'):
+    def __new__(cls, name=_default_name):
         if (name == ':memory:'
                 and getattr(cls._local, 'memory_database', None)):
             return cls._local.memory_database
         return DatabaseInterface.__new__(cls, name=name)
 
-    def __init__(self, name=':memory:'):
+    def __init__(self, name=_default_name):
         super(Database, self).__init__(name=name)
         if name == ':memory:':
             Database._local.memory_database = self

Reply via email to