o 3a @s@ddlZddlmZddlmZddlmZGdddeZdS)N) errorcodes)BaseDatabaseCreation) strip_quotescsJeZdZddZdddZddZdd Zdfd d Zdd dZZ S)DatabaseCreationcCs|jj|S)N) connectionops quote_name)selfnamer H/usr/lib/python3/dist-packages/django/db/backends/postgresql/creation.py _quote_name szDatabaseCreation._quote_nameNcCs:d}|r |d|7}|r|d||7}|od|S)Nz ENCODING '{}'z TEMPLATE {}WITH)formatr )r encodingtemplatesuffixr r r _get_database_create_suffixs  z,DatabaseCreation._get_database_create_suffixcCs8|jjd}|ddusJd|j|d|ddS)NTEST COLLATIONzHPostgreSQL does not support collation setting at database creation time.CHARSETTEMPLATE)rr)r settings_dictrget)r test_settingsr r r sql_table_creation_suffixs z*DatabaseCreation.sql_table_creation_suffixcCs|dt|g|duS)Nz7SELECT 1 FROM pg_catalog.pg_database WHERE datname = %s)executerfetchone)r cursor database_namer r r _database_exists s z!DatabaseCreation._database_existsFc sz|r|||drWdSt|||WdStyL}z(t|jddtjkr7|d|t dn |s:WYd}~dSWYd}~dSd}~ww)Ndbnamepgcoderz+Got an error creating the test database: %s) r!super_execute_create_test_db Exceptiongetattr __cause__rDUPLICATE_DATABASElogsysexit)r r parameterskeepdbe __class__r r r&$s z(DatabaseCreation._execute_create_test_dbc Cs|j|jjd}||d}|||j|dd}|c}z ||||WnHtytz |dkrD| d| ||f| d|||||Wntyq}z| d|t dWYd}~nd}~wwYn wWddSWddS1swYdS) NNAME)r)r"rz,Destroying old test database for alias %s...zDROP DATABASE %(dbname)sz*Got an error cloning the test database: %sr$)rcloserget_test_db_clone_settingsr r _nodb_cursorr&r'r+_get_database_display_strrr,r-) r r verbosityr/source_database_nametarget_database_nametest_db_paramsrr0r r r _clone_test_db5s8      "zDatabaseCreation._clone_test_db)NN)F) __name__ __module__ __qualname__r rrr!r&r= __classcell__r r r1r r s  r)r,psycopg2r django.db.backends.base.creationrdjango.db.backends.utilsrrr r r r s