
    Evg.                     Z    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	dS )    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                 @    | j         j                            |          S N)
connectionops
quote_name)selfnames     c/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/django/db/backends/postgresql/creation.py_quote_namezDatabaseCreation._quote_name
   s    "--d333    Nc                     d}|r|d                     |          z  }|r+|d                     |                     |                    z  }|od|z   S )N z ENCODING '{}'z TEMPLATE {}WITH)formatr   )r   encodingtemplatesuffixs       r   _get_database_create_suffixz,DatabaseCreation._get_database_create_suffix   sf     	8&--h777F 	Hn++D,<,<X,F,FGGGF)&6/)r   c                     | j         j        d         }|                    d          t          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_settingss     r   sql_table_creation_suffixz*DatabaseCreation.sql_table_creation_suffix   st    5f=[))5&!   //"9-"&&z22 0 
 
 	
r   c                 v    |                     dt          |          g           |                                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!   s@    E-(()	
 	
 	
   ,,r   Fc                 j   	 |r|                      ||d                   rd S t                                          |||           d S # t          $ r`}t	          |j        t          j                  s-|                     d|z             t          j
        d           n	|s Y d }~d S Y d }~d S 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M  GG++FJGGGGG 	 	 	ak6+CDD FJKKK        		s   A #A 
B2AB--B2c           	         | j                                          | j                                          | j         j        d         }|                     |          d         }|                     |          |                     |          d}|                                 5 }	 |                     |||           n# t          $ r 	 |dk    r-| 
                    d|                     ||          d           |                    d|z             |                     |||           nC# t          $ r6}| 
                    d|z             t          j        d	           Y d }~nd }~ww xY wY nw xY wd d d            d S # 1 swxY w Y   d S )
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   s    	""$$$#<VD#>>vFFvN&&';<<66@T6UU
 
    	 F ,,V^VLLLL        A~~ !% > >$-/C!" !" !" !"   NN#=#NOOO00PPPP       HHIAMNNNHQKKKKKKKK  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 sa    E>"B:9E>:
E.A"D('E.(
E(2,E#E.#E((E.+E>-E..E>>FFc                 z    | j                                          t                                          ||          S r
   )r   r>   r-   _destroy_test_db)r   test_database_namerB   r9   s      r   rH   z!DatabaseCreation._destroy_test_dbY   s2    ""$$$ww''(:IFFFr   )NN)F)__name__
__module____qualname__r   r   r#   r)   r.   rF   rH   __classcell__)r9   s   @r   r   r   	   s        4 4 4* * * *

 

 

- - -     "       @G G G G G G G 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 7 7 7 7 7 A A A A A A < < < < < < 1 1 1 1 1 1RG RG RG RG RG+ RG RG RG RG RGr   