a
    5Xhy                     @   sD   d dl Z d dlZd dlZd dlmZ ddlmZ G dd deZdS )    N)BaseDatabaseCreation   )DatabaseClientc                       s8   e Zd Zdd Zd
 fdd	ZdddZdd	 Z  ZS )DatabaseCreationc                 C   sN   g }| j jd }|d r*|d|d   |d rD|d|d   d|S )NTESTCHARSETzCHARACTER SET %sZ	COLLATIONz
COLLATE %s )
connectionsettings_dictappendjoin)selfsuffixZtest_settings r   f/var/www/viveiro_mudafortebrasil/venv/lib/python3.9/site-packages/django/db/backends/mysql/creation.pysql_table_creation_suffix   s    z*DatabaseCreation.sql_table_creation_suffixFc              
      sv   zt  ||| W n\ typ } zDt|jdk s@|jd dkrZ| d|  td n W Y d }~n
d }~0 0 d S )Nr   r   i  z+Got an error creating the test database: %s   )super_execute_create_test_db	Exceptionlenargslogsysexit)r   cursor
parameterskeepdbe	__class__r   r   r      s    z(DatabaseCreation._execute_create_test_dbc           	      C   s&  | j jd }| |d }| j j||  d}|  }z| ||| W n ty   |rrY W d    d S z@|dkr| 	d| 
||f  |d|  | ||| W n< ty } z$| 	d|  td W Y d }~n
d }~0 0 Y n0 W d    n1 s0    Y  | || d S )NNAME)Zdbnamer   r   z,Destroying old test database for alias %s...zDROP DATABASE %(dbname)sz-Got an error recreating the test database: %sr   )r	   r
   Zget_test_db_clone_settingsopsZ
quote_namer   Z_nodb_cursorr   r   r   Z_get_database_display_strexecuter   r   	_clone_db)	r   r   	verbosityr   source_database_nametarget_database_nameZtest_db_paramsr   r   r   r   r   _clone_test_db   s6    
FzDatabaseCreation._clone_test_dbc           
   	   C   s   t | jjg \}}dg|dd dd|}|rDi tj|nd  }}|}||d< tj|tj|dP}	tj||	j	tj
|d |	j	  W d    n1 s0    Y  W d    n1 s0    Y  d S )NZ	mysqldumpr   z
--routinesz--events)stdoutenv)stdinr*   r+   )r   Zsettings_to_cmd_args_envr	   r
   osenviron
subprocessPopenPIPEr*   DEVNULLclose)
r   r&   r'   cmd_argsZcmd_envZdump_cmdZdump_envZload_envZload_cmdZ	dump_procr   r   r   r$   >   s6    
zDatabaseCreation._clone_db)F)F)__name__
__module____qualname__r   r   r(   r$   __classcell__r   r   r   r   r   
   s   	
r   )r-   r/   r   Z django.db.backends.base.creationr   clientr   r   r   r   r   r   <module>   s
   