
    h.                     R    S SK r S SKJr  S SKJr  S SKJr  S SKJr   " S S\5      r	g)    N)ImproperlyConfigured)BaseDatabaseCreation)errors)strip_quotesc                   ^   ^  \ rS rSrS rS
S jrS rS rSU 4S jjrSS jr	U 4S jr
S	rU =r$ )DatabaseCreation	   c                 L    U R                   R                  R                  U5      $ N)
connectionops
quote_name)selfnames     X/var/www/html/env/lib/python3.13/site-packages/django/db/backends/postgresql/creation.py_quote_nameDatabaseCreation._quote_name
   s    ""--d33    c                     SnU(       a  USR                  U5      -  nU(       a#  USR                  U R                  U5      5      -  nU=(       a    SU-   $ )N z ENCODING '{}'z TEMPLATE {}WITH)formatr   )r   encodingtemplatesuffixs       r   _get_database_create_suffix,DatabaseCreation._get_database_create_suffix   sR    &--h77Fn++D,<,<X,FGGF)&6/)r   c                     U R                   R                  S   nUR                  S5      b  [        S5      eU R	                  US   UR                  S5      S9$ )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_suffix*DatabaseCreation.sql_table_creation_suffix   si    55f=[)5&!  //"9-"&&z2 0 
 	
r   c                 ^    UR                  S[        U5      /5        UR                  5       S L$ )Nz7SELECT 1 FROM pg_catalog.pg_database WHERE datname = %s)executer   fetchone)r   cursordatabase_names      r   _database_exists!DatabaseCreation._database_exists!   s0    E-()	
  ,,r   c                 X  >  U(       a  U R                  XS   5      (       a  g [        TU ]	  XU5        g ! [         aj  n[	        UR
                  [        R                  5      (       d/  U R                  SU-  5        [        R                  " S5         S nAg U(       d  e  S nAg S nAff = f)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   r3   (DatabaseCreation._execute_create_test_db(   s    	$//88LMM G+FG 	akk6+C+CDDFJK  	s    5 5 
B)AB$B$$B)c           	         U R                   R                  5         U R                   R                  5         U R                   R                  S   nU R	                  U5      S   nU R                  U5      U R                  US9S.nU R                  5        n U R                  XvU5        S S S 5        g ! [         a     US:  a%  U R                  SU R                  X%5      < S35        UR                  SU-  5        U R                  XvU5         Ng! [         a5  nU R                  SU-  5        [        R                  " S	5         S nA NS nAff = ff = f! , (       d  f       g = f)
NNAME)r   )r0   r      z'Destroying old test database for alias z...zDROP DATABASE %(dbname)sz*Got an error cloning the test database: %sr1   )r   close
close_poolr#   get_test_db_clone_settingsr   r   _nodb_cursorr3   r4   r8   _get_database_display_strr)   r9   r:   )	r   r   	verbosityr<   source_database_nametarget_database_nametest_db_paramsr+   r=   s	            r   _clone_test_dbDatabaseCreation._clone_test_db9   sA    	""$#<<VD#>>vFvN&&';<66@T6U
  F ,,VVL !      A~ !% > >$-!" NN#=#NO00P   HHIAMNHHQKK   ! sO   EB00
E;ADE
E*EEEEEE
E"c                 V   > U R                   R                  5         [        TU ]  X5      $ r   )r   rD   r2   _destroy_test_db)r   test_database_namerH   r>   s      r   rO   !DatabaseCreation._destroy_test_dbY   s$    ""$w'(:FFr    )NN)F)__name__
__module____qualname____firstlineno__r   r   r&   r-   r3   rL   rO   __static_attributes____classcell__)r>   s   @r   r   r   	   s.    4*

-" @G Gr   r   )
r9   django.core.exceptionsr    django.db.backends.base.creationr   )django.db.backends.postgresql.psycopg_anyr   django.db.backends.utilsr   r   rR   r   r   <module>r]      s%    
 7 A < 1RG+ RGr   