Esempio n. 1
0
 def test_service_name(self):
     from django.db.backends.postgresql.base import DatabaseWrapper
     settings = connection.settings_dict.copy()
     settings['OPTIONS'] = {'service': 'my_service'}
     settings['NAME'] = ''
     params = DatabaseWrapper(settings).get_connection_params()
     self.assertEqual(params['service'], 'my_service')
     self.assertNotIn('database', params)
Esempio n. 2
0
 def test_service_name_default_db(self):
     # None is used to connect to the default 'postgres' db.
     from django.db.backends.postgresql.base import DatabaseWrapper
     settings = connection.settings_dict.copy()
     settings['NAME'] = None
     settings['OPTIONS'] = {'service': 'django_test'}
     params = DatabaseWrapper(settings).get_connection_params()
     self.assertEqual(params['database'], 'postgres')
     self.assertNotIn('service', params)
Esempio n. 3
0
 def test_database_name_empty(self):
     from django.db.backends.postgresql.base import DatabaseWrapper
     settings = connection.settings_dict.copy()
     settings['NAME'] = ''
     msg = (
         "settings.DATABASES is improperly configured. Please supply the "
         "NAME or OPTIONS['service'] value.")
     with self.assertRaisesMessage(ImproperlyConfigured, msg):
         DatabaseWrapper(settings).get_connection_params()
def setrole_connection(*, sender: Type[PostgreSQLDatabaseWrapper],
                       connection: PostgreSQLDatabaseWrapper,
                       **kwargs: Any) -> None:
    global warning_given
    role = None
    if "set_role" in connection.settings_dict:
        role = connection.settings_dict["set_role"]
    elif "SET_ROLE" in connection.settings_dict:
        role = connection.settings_dict["SET_ROLE"]

    if role:
        connection.cursor().execute("SET ROLE %s", (role, ))
    else:
        if not warning_given:
            warnings.warn(
                "postgresql_setrole app is installed, but no SET_ROLE value is in settings.DATABASE"
            )
            warning_given = True  # Once is enough
Esempio n. 5
0
    def test_service_name(self):
        from django.db.backends.postgresql.base import DatabaseWrapper

        settings = connection.settings_dict.copy()
        settings["OPTIONS"] = {"service": "my_service"}
        settings["NAME"] = ""
        params = DatabaseWrapper(settings).get_connection_params()
        self.assertEqual(params["service"], "my_service")
        self.assertNotIn("database", params)
Esempio n. 6
0
    def test_service_name_default_db(self):
        # None is used to connect to the default 'postgres' db.
        from django.db.backends.postgresql.base import DatabaseWrapper

        settings = connection.settings_dict.copy()
        settings["NAME"] = None
        settings["OPTIONS"] = {"service": "django_test"}
        params = DatabaseWrapper(settings).get_connection_params()
        self.assertEqual(params["database"], "postgres")
        self.assertNotIn("service", params)
Esempio n. 7
0
 def test_database_name_too_long(self):
     from django.db.backends.postgresql.base import DatabaseWrapper
     settings = connection.settings_dict.copy()
     max_name_length = connection.ops.max_name_length()
     settings['NAME'] = 'a' + (max_name_length * 'a')
     msg = ('Database names longer than %d characters are not supported by '
            'PostgreSQL. Supply a shorter NAME in settings.DATABASES.'
            ) % max_name_length
     with self.assertRaisesMessage(ImproperlyConfigured, msg):
         DatabaseWrapper(settings).get_connection_params()
def database_init_signal(signal, sender: DatabaseWrapper,
                         connection: DatabaseWrapper, **kwargs):
    """ On database connection create Database """
    database_name: str = f"{settings.DATABASES['default']['NAME']}"

    cursor = connection.cursor()

    try:
        cursor.execute(f'CREATE DATABASE "{database_name}"')
    except ProgrammingError:
        print("Database already exist")
Esempio n. 9
0
 def test_database_name_too_long(self):
     from django.db.backends.postgresql.base import DatabaseWrapper
     settings = connection.settings_dict.copy()
     max_name_length = connection.ops.max_name_length()
     settings['NAME'] = 'a' + (max_name_length * 'a')
     msg = ("The database name '%s' (%d characters) is longer than "
            "PostgreSQL's limit of %s characters. Supply a shorter NAME in "
            "settings.DATABASES.") % (settings['NAME'], max_name_length + 1,
                                      max_name_length)
     with self.assertRaisesMessage(ImproperlyConfigured, msg):
         DatabaseWrapper(settings).get_connection_params()