a
    Lcòf]  ã                   @   sL   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ G dd„ deƒZ	dS )é    N)ÚImproperlyConfigured)ÚBaseDatabaseCreation)Úerrors)Ústrip_quotesc                       sJ   e Zd Zdd„ Zddd„Zdd„ Zdd	„ Zd‡ fdd„	Zddd„Z‡  Z	S )ÚDatabaseCreationc                 C   s   | j j |¡S )N)Ú
connectionÚopsZ
quote_name)ÚselfÚname© r   úc/home/httpd/docs/test/DocsMgr/lib/python3.9/site-packages/django/db/backends/postgresql/creation.pyÚ_quote_name
   s    zDatabaseCreation._quote_nameNc                 C   s:   d}|r|d  |¡7 }|r.|d  |  |¡¡7 }|o8d| S )NÚ z ENCODING '{}'z TEMPLATE {}ZWITH)Úformatr   )r	   ÚencodingÚtemplateÚsuffixr   r   r   Ú_get_database_create_suffix   s    z,DatabaseCreation._get_database_create_suffixc                 C   s:   | j jd }| d¡d ur"tdƒ‚| j|d | d¡d�S )NÚTESTZ	COLLATIONzHPostgreSQL does not support collation setting at database creation time.ÚCHARSETÚTEMPLATE)r   r   )r   Úsettings_dictÚgetr   r   )r	   Ztest_settingsr   r   r   Úsql_table_creation_suffix   s    ÿþz*DatabaseCreation.sql_table_creation_suffixc                 C   s   |  dt|ƒg¡ | ¡ d uS )Nz7SELECT 1 FROM pg_catalog.pg_database WHERE datname = %s)Úexecuter   Zfetchone)r	   ÚcursorZdatabase_namer   r   r   Ú_database_exists!   s
    þz!DatabaseCreation._database_existsFc              
      s†   z.|r|   ||d ¡rW d S tƒ  |||¡ W nR ty€ } z:t|jtjƒsf|  d| ¡ t	 
d¡ n|sl‚ W Y d }~n
d }~0 0 d S )NÚdbnamez+Got an error creating the test database: %sé   )r   ÚsuperÚ_execute_create_test_dbÚ	ExceptionÚ
isinstanceÚ	__cause__r   ZDuplicateDatabaseÚlogÚsysÚexit)r	   r   Ú
parametersÚkeepdbÚe©Ú	__class__r   r   r    (   s    z(DatabaseCreation._execute_create_test_dbc           	      C   s  | j  ¡  | j jd }|  |¡d }|  |¡| j|d�dœ}|  ¡ �´}z|  |||¡ W n� tyè   z@|dkrˆ|  	d|  
||¡f ¡ | d| ¡ |  |||¡ W n< tyâ } z$|  	d| ¡ t d¡ W Y d }~n
d }~0 0 Y n0 W d   ƒ n1 sþ0    Y  d S )	NÚNAME)r   )r   r   é   z,Destroying old test database for alias %s...zDROP DATABASE %(dbname)sz*Got an error cloning the test database: %sr   )r   Úcloser   Zget_test_db_clone_settingsr   r   Z_nodb_cursorr    r!   r$   Z_get_database_display_strr   r%   r&   )	r	   r   Ú	verbosityr(   Zsource_database_nameZtarget_database_nameZtest_db_paramsr   r)   r   r   r   Ú_clone_test_db9   s2    

þ
ÿÿÿÿzDatabaseCreation._clone_test_db)NN)F)F)
Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r    r0   Ú__classcell__r   r   r*   r   r   	   s   
r   )
r%   Zdjango.core.exceptionsr   Z django.db.backends.base.creationr   Z)django.db.backends.postgresql.psycopg_anyr   Zdjango.db.backends.utilsr   r   r   r   r   r   Ú<module>   s
   