3
u|e                 @   s@   d dl 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)
errorcodes)BaseDatabaseCreation)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j|S )N)
connectionopsZ
quote_name)selfname r
   j/var/www/html/StaffProfile/staffvenv/lib/python3.6/site-packages/django/db/backends/postgresql/creation.py_quote_name   s    zDatabaseCreation._quote_nameNc             C   s:   d}|r|dj |7 }|r.|dj | j|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   s8   | j jd }|d d ks td| j|d |jddS )NZTESTZ	COLLATIONzHPostgreSQL does not support collation setting at database creation time.CHARSETTEMPLATE)r   r   )r   settings_dictAssertionErrorr   get)r   Ztest_settingsr
   r
   r   sql_table_creation_suffix   s    z*DatabaseCreation.sql_table_creation_suffixc             C   s   |j dt|g |j d k	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   y,|r| j ||d rd S t j||| W nV tk
r } z:t|jddtjkrl| jd|  t	j
d n|sr W Y d d }~X nX d S )NdbnameZpgcoder   z+Got an error creating the test database: %s   )r   super_execute_create_test_db	Exceptiongetattr	__cause__r   ZDUPLICATE_DATABASE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 }| j|d }| j|| j|dd}| j }y| j||| W n tk
r   y@|dkr| j	d| j
||f  |jd|  | j||| W n: tk
r } z| j	d|  tjd W Y d d }~X nX Y nX W d Q R X 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_db5   s$    

zDatabaseCreation._clone_test_db)NN)F)F)
__name__
__module____qualname__r   r   r   r   r   r.   __classcell__r
   r
   )r)   r   r   	   s   

r   )r$   Zpsycopg2r   Z django.db.backends.base.creationr   Zdjango.db.backends.utilsr   r   r
   r
   r
   r   <module>   s   