
    g.                     R    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e      Z	y)    N)ImproperlyConfigured)BaseDatabaseCreation)errors)strip_quotesc                   L     e Zd Zd ZddZd Zd Zd	 fd	Zd	dZ fdZ	 xZ
S )
DatabaseCreationc                 L    | j                   j                  j                  |      S N)
connectionops
quote_name)selfnames     ~/var/www/python.vincentserveurtest.ovh/public_html/venv/lib/python3.12/site-packages/django/db/backends/postgresql/creation.py_quote_namezDatabaseCreation._quote_name
   s    ""--d33    c                     d}|r|dj                  |      z  }|r#|dj                  | j                  |            z  }|xr d|z   S )N z ENCODING '{}'z TEMPLATE {}WITH)formatr   )r   encodingtemplatesuffixs       r   _get_database_create_suffixz,DatabaseCreation._get_database_create_suffix   sR    &--h77Fn++D,<,<X,FGGF)&6/)r   c                     | j                   j                  d   }|j                  d      t        d      | j	                  |d   |j                  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_settingss     r   sql_table_creation_suffixz*DatabaseCreation.sql_table_creation_suffix   si    55f=[)5&!  //"9-"&&z2 0 
 	
r   c                 ^    |j                  dt        |      g       |j                         d uS )Nz7SELECT 1 FROM pg_catalog.pg_database WHERE datname = %s)executer   fetchone)r   cursordatabase_names      r   _database_existsz!DatabaseCreation._database_exists!   s0    E-()	
  ,,r   c                 2   	 |r| j                  ||d         ry t        | 	  |||       y # t        $ r`}t	        |j
                  t        j                        s*| j                  d|z         t        j                  d       n|s Y d }~y Y d }~y d }~ww xY 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__s        r   r.   z(DatabaseCreation._execute_create_test_db(   s    	$//
88LM G+FJG 	akk6+C+CDFJK   		s   - - 	BABBc           	         | j                   j                          | j                   j                          | j                   j                  d   }| j	                  |      d   }| j                  |      | j                  |      d}| j                         5 }	 | j                  |||       d d d        y # t        $ r 	 |dk\  r%| j                  d| j                  ||      d       |j                  d|z         | j                  |||       n?# t        $ r3}| j                  d|z         t        j                  d	       Y d }~nd }~ww xY wY w xY w# 1 sw Y   y xY w)
NNAME)r   )r+   r      z'Destroying old test database for alias z...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/   r3   _get_database_display_strr%   r4   r5   )	r   r   	verbosityr7   source_database_nametarget_database_nametest_db_paramsr'   r8   s	            r   _clone_test_dbzDatabaseCreation._clone_test_db9   sH    	""$#<<VD#>>vFvN&&';<66@T6U
  F ,,V^VL !      A~ !% > >$-/C!" NN#=#NO00P   HHIAMNHHQKK   ! sU   EB44	E>ADE	E)EEEEEEEEc                 X    | j                   j                          t        |   ||      S r
   )r   r>   r-   _destroy_test_db)r   test_database_namerB   r9   s      r   rH   z!DatabaseCreation._destroy_test_dbY   s&    ""$w'(:IFFr   )NN)F)__name__
__module____qualname__r   r   r#   r)   r.   rF   rH   __classcell__)r9   s   @r   r   r   	   s.    4*

-" @G Gr   r   )
r4   django.core.exceptionsr    django.db.backends.base.creationr   )django.db.backends.postgresql.psycopg_anyr   django.db.backends.utilsr   r    r   r   <module>rS      s%    
 7 A < 1RG+ RGr   