Loading django/db/backends/oracle/creation.py +41 −43 Original line number Diff line number Diff line Loading @@ -58,20 +58,7 @@ class DatabaseCreation(BaseDatabaseCreation): super(DatabaseCreation, self).__init__(connection) def _create_test_db(self, verbosity=1, autoclobber=False, keepdb=False): TEST_NAME = self._test_database_name() TEST_USER = self._test_database_user() TEST_PASSWD = self._test_database_passwd() TEST_TBLSPACE = self._test_database_tblspace() TEST_TBLSPACE_TMP = self._test_database_tblspace_tmp() parameters = { 'dbname': TEST_NAME, 'user': TEST_USER, 'password': TEST_PASSWD, 'tblspace': TEST_TBLSPACE, 'tblspace_temp': TEST_TBLSPACE_TMP, } parameters = self._get_test_db_params() cursor = self.connection.cursor() if self._test_database_create(): try: Loading @@ -85,8 +72,7 @@ class DatabaseCreation(BaseDatabaseCreation): if not autoclobber: confirm = input( "It appears the test database, %s, already exists. " "Type 'yes' to delete it, or 'no' to cancel: " % TEST_NAME ) "Type 'yes' to delete it, or 'no' to cancel: " % parameters['user']) if autoclobber or confirm == 'yes': try: if verbosity >= 1: Loading @@ -110,8 +96,7 @@ class DatabaseCreation(BaseDatabaseCreation): if not autoclobber: confirm = input( "It appears the test user, %s, already exists. Type " "'yes' to delete it, or 'no' to cancel: " % TEST_USER ) "'yes' to delete it, or 'no' to cancel: " % parameters['user']) if autoclobber or confirm == 'yes': try: if verbosity >= 1: Loading @@ -137,8 +122,8 @@ class DatabaseCreation(BaseDatabaseCreation): real_test_settings = real_settings['TEST'] test_settings = self.connection.settings_dict['TEST'] real_test_settings['USER'] = real_settings['USER'] = test_settings['USER'] = \ self.connection.settings_dict['USER'] = TEST_USER real_settings['PASSWORD'] = self.connection.settings_dict['PASSWORD'] = TEST_PASSWD self.connection.settings_dict['USER'] = parameters['user'] real_settings['PASSWORD'] = self.connection.settings_dict['PASSWORD'] = parameters['password'] return self.connection.settings_dict['NAME'] Loading @@ -147,23 +132,9 @@ class DatabaseCreation(BaseDatabaseCreation): Destroy a test database, prompting the user for confirmation if the database already exists. Returns the name of the test database created. """ TEST_NAME = self._test_database_name() TEST_USER = self._test_database_user() TEST_PASSWD = self._test_database_passwd() TEST_TBLSPACE = self._test_database_tblspace() TEST_TBLSPACE_TMP = self._test_database_tblspace_tmp() self.connection.settings_dict['USER'] = self.connection.settings_dict['SAVED_USER'] self.connection.settings_dict['PASSWORD'] = self.connection.settings_dict['SAVED_PASSWORD'] parameters = { 'dbname': TEST_NAME, 'user': TEST_USER, 'password': TEST_PASSWD, 'tblspace': TEST_TBLSPACE, 'tblspace_temp': TEST_TBLSPACE_TMP, } parameters = self._get_test_db_params() cursor = self.connection.cursor() time.sleep(1) # To avoid "database is being accessed by other users" errors. if self._test_user_create(): Loading @@ -178,15 +149,15 @@ class DatabaseCreation(BaseDatabaseCreation): def _execute_test_db_creation(self, cursor, parameters, verbosity): if verbosity >= 2: print("_create_test_db(): dbname = %s" % parameters['dbname']) print("_create_test_db(): dbname = %s" % parameters['user']) statements = [ """CREATE TABLESPACE %(tblspace)s DATAFILE '%(tblspace)s.dbf' SIZE 20M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 200M DATAFILE '%(datafile)s' SIZE 20M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE %(maxsize)s """, """CREATE TEMPORARY TABLESPACE %(tblspace_temp)s TEMPFILE '%(tblspace_temp)s.dbf' SIZE 20M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 100M TEMPFILE '%(datafile_tmp)s' SIZE 20M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE %(maxsize_tmp)s """, ] self._execute_statements(cursor, statements, parameters, verbosity) Loading @@ -207,7 +178,7 @@ class DatabaseCreation(BaseDatabaseCreation): def _execute_test_db_destruction(self, cursor, parameters, verbosity): if verbosity >= 2: print("_execute_test_db_destruction(): dbname=%s" % parameters['dbname']) print("_execute_test_db_destruction(): dbname=%s" % parameters['user']) statements = [ 'DROP TABLESPACE %(tblspace)s INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS', 'DROP TABLESPACE %(tblspace_temp)s INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS', Loading @@ -234,6 +205,19 @@ class DatabaseCreation(BaseDatabaseCreation): sys.stderr.write("Failed (%s)\n" % (err)) raise def _get_test_db_params(self): return { 'dbname': self._test_database_name(), 'user': self._test_database_user(), 'password': self._test_database_passwd(), 'tblspace': self._test_database_tblspace(), 'tblspace_temp': self._test_database_tblspace_tmp(), 'datafile': self._test_database_tblspace_datafile(), 'datafile_tmp': self._test_database_tblspace_tmp_datafile(), 'maxsize': self._test_database_tblspace_size(), 'maxsize_tmp': self._test_database_tblspace_tmp_size(), } def _test_settings_get(self, key, default=None, prefixed=None): """ Return a value from the test settings dict, Loading Loading @@ -262,12 +246,26 @@ class DatabaseCreation(BaseDatabaseCreation): return self._test_settings_get('PASSWORD', default=PASSWORD) def _test_database_tblspace(self): return self._test_settings_get('TBLSPACE', prefixed='NAME') return self._test_settings_get('TBLSPACE', prefixed='USER') def _test_database_tblspace_tmp(self): settings_dict = self.connection.settings_dict return settings_dict['TEST'].get('TBLSPACE_TMP', TEST_DATABASE_PREFIX + settings_dict['NAME'] + '_temp') TEST_DATABASE_PREFIX + settings_dict['USER'] + '_temp') def _test_database_tblspace_datafile(self): tblspace = '%s.dbf' % self._test_database_tblspace() return self._test_settings_get('DATAFILE', default=tblspace) def _test_database_tblspace_tmp_datafile(self): tblspace = '%s.dbf' % self._test_database_tblspace_tmp() return self._test_settings_get('DATAFILE_TMP', default=tblspace) def _test_database_tblspace_size(self): return self._test_settings_get('DATAFILE_MAXSIZE', default='500M') def _test_database_tblspace_tmp_size(self): return self._test_settings_get('DATAFILE_TMP_MAXSIZE', default='500M') def _get_test_db_name(self): """ Loading docs/ref/settings.txt +72 −2 Original line number Diff line number Diff line Loading @@ -741,7 +741,11 @@ Default: ``None`` This is an Oracle-specific setting. The name of the tablespace that will be used when running tests. If not provided, Django will use ``'test_' + NAME``. provided, Django will use ``'test_' + USER``. .. versionchanged:: 1.8 Previously Django used ``'test_' + NAME`` if not provided. .. setting:: TEST_TBLSPACE_TMP Loading @@ -753,7 +757,73 @@ Default: ``None`` This is an Oracle-specific setting. The name of the temporary tablespace that will be used when running tests. If not provided, Django will use ``'test_' + NAME + '_temp'``. not provided, Django will use ``'test_' + USER + '_temp'``. .. versionchanged:: 1.8 Previously Django used ``'test_' + NAME + '_temp'`` if not provided. .. setting:: DATAFILE DATAFILE ^^^^^^^^ .. versionadded:: 1.8 Default: ``None`` This is an Oracle-specific setting. The name of the datafile to use for the TBLSPACE. If not provided, Django will use ``TBLSPACE + '.dbf'``. .. setting:: DATAFILE_TMP DATAFILE_TMP ^^^^^^^^^^^^ .. versionadded:: 1.8 Default: ``None`` This is an Oracle-specific setting. The name of the datafile to use for the TBLSPACE_TMP. If not provided, Django will use ``TBLSPACE_TMP + '.dbf'``. .. setting:: DATAFILE_MAXSIZE DATAFILE_MAXSIZE ^^^^^^^^^^^^^^^^ .. versionadded:: 1.8 Default: ``'500M'`` .. versionchanged:: 1.8 The previous value was 200M and was not user customizable. This is an Oracle-specific setting. The maximum size that the DATAFILE is allowed to grow to. .. setting:: DATAFILE_TMP_MAXSIZE DATAFILE_TMP_MAXSIZE ^^^^^^^^^^^^^^^^^^^^ .. versionadded:: 1.8 Default: ``'500M'`` .. versionchanged:: 1.8 The previous value was 200M and was not user customizable. This is an Oracle-specific setting. The maximum size that the DATAFILE_TMP is allowed to grow to. .. setting:: OLD_TEST_CHARSET Loading docs/releases/1.8.txt +7 −0 Original line number Diff line number Diff line Loading @@ -341,6 +341,10 @@ Tests * Added the :attr:`~django.test.Response.resolver_match` attribute to test client responses. * Added several settings that allow customization of test tablespace parameters for Oracle: :setting:`DATAFILE`, :setting:`DATAFILE_TMP`, :setting:`DATAFILE_MAXSIZE` and :setting:`DATAFILE_TMP_MAXSIZE`. Validators ^^^^^^^^^^ Loading Loading @@ -569,6 +573,9 @@ Miscellaneous * Seconds have been removed from any locales that had them in ``TIME_FORMAT``, ``DATETIME_FORMAT``, or ``SHORT_DATETIME_FORMAT``. * The default maxsize of the Oracle test tablespace has increased from 200M to 500M. .. _deprecated-features-1.8: Features deprecated in 1.8 Loading Loading
django/db/backends/oracle/creation.py +41 −43 Original line number Diff line number Diff line Loading @@ -58,20 +58,7 @@ class DatabaseCreation(BaseDatabaseCreation): super(DatabaseCreation, self).__init__(connection) def _create_test_db(self, verbosity=1, autoclobber=False, keepdb=False): TEST_NAME = self._test_database_name() TEST_USER = self._test_database_user() TEST_PASSWD = self._test_database_passwd() TEST_TBLSPACE = self._test_database_tblspace() TEST_TBLSPACE_TMP = self._test_database_tblspace_tmp() parameters = { 'dbname': TEST_NAME, 'user': TEST_USER, 'password': TEST_PASSWD, 'tblspace': TEST_TBLSPACE, 'tblspace_temp': TEST_TBLSPACE_TMP, } parameters = self._get_test_db_params() cursor = self.connection.cursor() if self._test_database_create(): try: Loading @@ -85,8 +72,7 @@ class DatabaseCreation(BaseDatabaseCreation): if not autoclobber: confirm = input( "It appears the test database, %s, already exists. " "Type 'yes' to delete it, or 'no' to cancel: " % TEST_NAME ) "Type 'yes' to delete it, or 'no' to cancel: " % parameters['user']) if autoclobber or confirm == 'yes': try: if verbosity >= 1: Loading @@ -110,8 +96,7 @@ class DatabaseCreation(BaseDatabaseCreation): if not autoclobber: confirm = input( "It appears the test user, %s, already exists. Type " "'yes' to delete it, or 'no' to cancel: " % TEST_USER ) "'yes' to delete it, or 'no' to cancel: " % parameters['user']) if autoclobber or confirm == 'yes': try: if verbosity >= 1: Loading @@ -137,8 +122,8 @@ class DatabaseCreation(BaseDatabaseCreation): real_test_settings = real_settings['TEST'] test_settings = self.connection.settings_dict['TEST'] real_test_settings['USER'] = real_settings['USER'] = test_settings['USER'] = \ self.connection.settings_dict['USER'] = TEST_USER real_settings['PASSWORD'] = self.connection.settings_dict['PASSWORD'] = TEST_PASSWD self.connection.settings_dict['USER'] = parameters['user'] real_settings['PASSWORD'] = self.connection.settings_dict['PASSWORD'] = parameters['password'] return self.connection.settings_dict['NAME'] Loading @@ -147,23 +132,9 @@ class DatabaseCreation(BaseDatabaseCreation): Destroy a test database, prompting the user for confirmation if the database already exists. Returns the name of the test database created. """ TEST_NAME = self._test_database_name() TEST_USER = self._test_database_user() TEST_PASSWD = self._test_database_passwd() TEST_TBLSPACE = self._test_database_tblspace() TEST_TBLSPACE_TMP = self._test_database_tblspace_tmp() self.connection.settings_dict['USER'] = self.connection.settings_dict['SAVED_USER'] self.connection.settings_dict['PASSWORD'] = self.connection.settings_dict['SAVED_PASSWORD'] parameters = { 'dbname': TEST_NAME, 'user': TEST_USER, 'password': TEST_PASSWD, 'tblspace': TEST_TBLSPACE, 'tblspace_temp': TEST_TBLSPACE_TMP, } parameters = self._get_test_db_params() cursor = self.connection.cursor() time.sleep(1) # To avoid "database is being accessed by other users" errors. if self._test_user_create(): Loading @@ -178,15 +149,15 @@ class DatabaseCreation(BaseDatabaseCreation): def _execute_test_db_creation(self, cursor, parameters, verbosity): if verbosity >= 2: print("_create_test_db(): dbname = %s" % parameters['dbname']) print("_create_test_db(): dbname = %s" % parameters['user']) statements = [ """CREATE TABLESPACE %(tblspace)s DATAFILE '%(tblspace)s.dbf' SIZE 20M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 200M DATAFILE '%(datafile)s' SIZE 20M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE %(maxsize)s """, """CREATE TEMPORARY TABLESPACE %(tblspace_temp)s TEMPFILE '%(tblspace_temp)s.dbf' SIZE 20M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 100M TEMPFILE '%(datafile_tmp)s' SIZE 20M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE %(maxsize_tmp)s """, ] self._execute_statements(cursor, statements, parameters, verbosity) Loading @@ -207,7 +178,7 @@ class DatabaseCreation(BaseDatabaseCreation): def _execute_test_db_destruction(self, cursor, parameters, verbosity): if verbosity >= 2: print("_execute_test_db_destruction(): dbname=%s" % parameters['dbname']) print("_execute_test_db_destruction(): dbname=%s" % parameters['user']) statements = [ 'DROP TABLESPACE %(tblspace)s INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS', 'DROP TABLESPACE %(tblspace_temp)s INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS', Loading @@ -234,6 +205,19 @@ class DatabaseCreation(BaseDatabaseCreation): sys.stderr.write("Failed (%s)\n" % (err)) raise def _get_test_db_params(self): return { 'dbname': self._test_database_name(), 'user': self._test_database_user(), 'password': self._test_database_passwd(), 'tblspace': self._test_database_tblspace(), 'tblspace_temp': self._test_database_tblspace_tmp(), 'datafile': self._test_database_tblspace_datafile(), 'datafile_tmp': self._test_database_tblspace_tmp_datafile(), 'maxsize': self._test_database_tblspace_size(), 'maxsize_tmp': self._test_database_tblspace_tmp_size(), } def _test_settings_get(self, key, default=None, prefixed=None): """ Return a value from the test settings dict, Loading Loading @@ -262,12 +246,26 @@ class DatabaseCreation(BaseDatabaseCreation): return self._test_settings_get('PASSWORD', default=PASSWORD) def _test_database_tblspace(self): return self._test_settings_get('TBLSPACE', prefixed='NAME') return self._test_settings_get('TBLSPACE', prefixed='USER') def _test_database_tblspace_tmp(self): settings_dict = self.connection.settings_dict return settings_dict['TEST'].get('TBLSPACE_TMP', TEST_DATABASE_PREFIX + settings_dict['NAME'] + '_temp') TEST_DATABASE_PREFIX + settings_dict['USER'] + '_temp') def _test_database_tblspace_datafile(self): tblspace = '%s.dbf' % self._test_database_tblspace() return self._test_settings_get('DATAFILE', default=tblspace) def _test_database_tblspace_tmp_datafile(self): tblspace = '%s.dbf' % self._test_database_tblspace_tmp() return self._test_settings_get('DATAFILE_TMP', default=tblspace) def _test_database_tblspace_size(self): return self._test_settings_get('DATAFILE_MAXSIZE', default='500M') def _test_database_tblspace_tmp_size(self): return self._test_settings_get('DATAFILE_TMP_MAXSIZE', default='500M') def _get_test_db_name(self): """ Loading
docs/ref/settings.txt +72 −2 Original line number Diff line number Diff line Loading @@ -741,7 +741,11 @@ Default: ``None`` This is an Oracle-specific setting. The name of the tablespace that will be used when running tests. If not provided, Django will use ``'test_' + NAME``. provided, Django will use ``'test_' + USER``. .. versionchanged:: 1.8 Previously Django used ``'test_' + NAME`` if not provided. .. setting:: TEST_TBLSPACE_TMP Loading @@ -753,7 +757,73 @@ Default: ``None`` This is an Oracle-specific setting. The name of the temporary tablespace that will be used when running tests. If not provided, Django will use ``'test_' + NAME + '_temp'``. not provided, Django will use ``'test_' + USER + '_temp'``. .. versionchanged:: 1.8 Previously Django used ``'test_' + NAME + '_temp'`` if not provided. .. setting:: DATAFILE DATAFILE ^^^^^^^^ .. versionadded:: 1.8 Default: ``None`` This is an Oracle-specific setting. The name of the datafile to use for the TBLSPACE. If not provided, Django will use ``TBLSPACE + '.dbf'``. .. setting:: DATAFILE_TMP DATAFILE_TMP ^^^^^^^^^^^^ .. versionadded:: 1.8 Default: ``None`` This is an Oracle-specific setting. The name of the datafile to use for the TBLSPACE_TMP. If not provided, Django will use ``TBLSPACE_TMP + '.dbf'``. .. setting:: DATAFILE_MAXSIZE DATAFILE_MAXSIZE ^^^^^^^^^^^^^^^^ .. versionadded:: 1.8 Default: ``'500M'`` .. versionchanged:: 1.8 The previous value was 200M and was not user customizable. This is an Oracle-specific setting. The maximum size that the DATAFILE is allowed to grow to. .. setting:: DATAFILE_TMP_MAXSIZE DATAFILE_TMP_MAXSIZE ^^^^^^^^^^^^^^^^^^^^ .. versionadded:: 1.8 Default: ``'500M'`` .. versionchanged:: 1.8 The previous value was 200M and was not user customizable. This is an Oracle-specific setting. The maximum size that the DATAFILE_TMP is allowed to grow to. .. setting:: OLD_TEST_CHARSET Loading
docs/releases/1.8.txt +7 −0 Original line number Diff line number Diff line Loading @@ -341,6 +341,10 @@ Tests * Added the :attr:`~django.test.Response.resolver_match` attribute to test client responses. * Added several settings that allow customization of test tablespace parameters for Oracle: :setting:`DATAFILE`, :setting:`DATAFILE_TMP`, :setting:`DATAFILE_MAXSIZE` and :setting:`DATAFILE_TMP_MAXSIZE`. Validators ^^^^^^^^^^ Loading Loading @@ -569,6 +573,9 @@ Miscellaneous * Seconds have been removed from any locales that had them in ``TIME_FORMAT``, ``DATETIME_FORMAT``, or ``SHORT_DATETIME_FORMAT``. * The default maxsize of the Oracle test tablespace has increased from 200M to 500M. .. _deprecated-features-1.8: Features deprecated in 1.8 Loading