o
    "7h.                     @   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                       sV   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 fddZ	  Z
S )DatabaseCreationc                 C   s   | j j|S N)
connectionops
quote_name)selfname r   {/var/www/epreuve.sigeris.cm/public_html/epreuve/venv/lib/python3.10/site-packages/django/db/backends/postgresql/creation.py_quote_name
   s   zDatabaseCreation._quote_nameNc                 C   s:   d}|r|d |7 }|r|d | |7 }|od| S )N z ENCODING '{}'z TEMPLATE {}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TEST	COLLATIONzHPostgreSQL does not support collation setting at database creation time.CHARSETTEMPLATE)r   r   )r   settings_dictgetr   r   )r   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   fetchone)r   cursordatabase_namer   r   r   _database_exists!   s
   z!DatabaseCreation._database_existsFc              
      s   z|r|  ||d rW d S t ||| W d S  tyI } z%t|jtjs4| d|  t	
d n
|s7 W Y d }~d S W Y d }~d S d }~ww )Ndbnamez+Got an error creating the test database: %s   )r#   super_execute_create_test_db	Exception
isinstance	__cause__r   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 jd }| |d }| || j|dd}|  c}z	| ||| W nH t	yy   z |dkrI| 
d| ||f  |d|  | ||| W n t	yv } z| 
d|  td W Y d }~nd }~ww Y n	w W d    d S W d    d S 1 sw   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   close
close_poolr   get_test_db_clone_settingsr   r   _nodb_cursorr'   r(   r,   _get_database_display_strr   r-   r.   )	r   r   	verbosityr0   source_database_nametarget_database_nametest_db_paramsr!   r1   r   r   r   _clone_test_db9   sD   



" zDatabaseCreation._clone_test_dbc                    s   | j   t ||S r   )r   r7   r&   _destroy_test_db)r   test_database_namer;   r2   r   r   r@   Y   s   
z!DatabaseCreation._destroy_test_db)NN)F)__name__
__module____qualname__r   r   r   r#   r'   r?   r@   __classcell__r   r   r2   r   r   	   s    

 r   )
r-   django.core.exceptionsr    django.db.backends.base.creationr   )django.db.backends.postgresql.psycopg_anyr   django.db.backends.utilsr   r   r   r   r   r   <module>   s    