
    ǷiD                         d Z ddlZddlZddlZddlmZ ddlmZmZ ddl	m
Z
 ddlmZmZmZ ddlmZ ddlmZ dd	lmZ  G d
 de          ZdS )z\
reset_db command

originally from http://www.djangosnippets.org/snippets/828/ by dnordberg
    N)settings)BaseCommandCommandError)DEFAULT_DB_ALIAS)SQLITE_ENGINESPOSTGRESQL_ENGINESMYSQL_ENGINES)parse_mysql_cnf)signalcommand)RemovedInNextVersionWarningc                   8     e Zd ZdZ fdZed             Z xZS )Commandz%Resets the database for this project.c                 L   t                                          |           |                    dddddd           |                    dd	d
dd           |                    ddddd d           |                    ddddd d           |                    ddddd d           |                    ddddd d           |                    dddd t          d!           |                    d"t          d#t          z  $           |                    d%d&d	d'dd(           d S ))Nz	--noinputz
--no-inputstore_falseinteractiveTz:Tells Django to NOT prompt the user for input of any kind.)actiondestdefaulthelpz	--no-utf8
store_trueno_utf8_supportFz3Tells Django to not create a UTF-8 charset databasez-Uz--userstoreuserz=Use another user for the database than defined in settings.pyz-Oz--ownerownerz[Use another owner for creating the database than the user defined in settings or via --userz-Pz
--passwordpasswordzAUse another password for the database than defined in settings.pyz-Dz--dbnamedbnamez5Use another database name than defined in settings.pyz-Rz--routerrouterz:Use this router-database other than defined in settings.pyz
--databasezGNominates a database to run command for. Defaults to the "%s" database.)r   r   z-cz--close-sessionsclose_sessionszEClose database connections before dropping database (PostgreSQL only))superadd_argumentsadd_argumentr   )selfparser	__class__s     f/srv/django_bis/venv311/lib/python3.11/site-packages/django_extensions/management/commands/reset_db.pyr    zCommand.add_arguments   s   f%%%mM 	 	
 	
 	

 	3DF 	 	
 	
 	

 	(7P 	 	
 	
 	
 	)G'4n 	 	
 	
 	
 	,wZT 	 	
 	
 	
 	*W8TH 	 	
 	
 	
 	*W8EUM 	 	
 	
 	
 	"2Z]mm 	 	
 	
 	
 	$\@PZ_X 	 	
 	
 	
 	
 	
    c                 (	   |d         }|d         t           k    r$t          j        dt          d           |d         }t          j                            |          }|t          d|z            |                    d          }d	x}x}x}x}	}
|d
k    rt          |          \  }}}}	}
|d         p|                    d          p|}|d         p|                    d          p|}|d         p|}|d         p|                    d          p|}|d	k    rt          d          |                    d          p|	}	|                    d          p|
}
|d         }|d         rt          d|d          }nd}|dk    rt          d           dS |t          v r=	 t          j        d|           t          j        |           n# t           $ r Y nw xY w|t"          v rddl}||d}|	                    d          r|	|d<   n|	|d <   |
rt)          |
          |d!<    |j        d4i |}d"|z  }|d#         rd	nd$}d%|d&|}t          j        d'|           |                    |           t          j        d'|           |                    |                                           n|t0          v rddl}dd(i}|r||d<   |r||d<   |	r|	|d <   |
r|
|d!<    |j        d4i |}|                    d           |                                }|d)         r|d*|z  }t          j        d'|                                           	 |                    |           n9# |j        $ r,}t          j        d+t?          |                     Y d}~nd}~ww xY wd,|z  }t          j        d'|           	 |                    |           n9# |j        $ r,}t          j        d+t?          |                     Y d}~nd}~ww xY wd-|z  }|r|d.|z  z  }|d/z  }t          j         r|d0t          j         z  z  }n|d1z  }t          j        d'|           |                    |           nt          d2|z            |dk    s|d         rt          d3           dS dS )5z
        Reset the database for this project.

        Note: Transaction wrappers are in reverse as a work around for
        autocommit, anybody know how to do this the right way?
        databaser   z2--router is deprecated. You should use --database.   )
stacklevelNzUnknown database %sENGINE mysqlr   USERr   PASSWORDr   r   NAMEz?You need to specify DATABASE_NAME in your Django settings file.HOSTPORT	verbosityr   z_
You have requested a database reset.
This will IRREVERSIBLY DESTROY
ALL data in the database "zQ".
Are you sure you want to do this?

Type 'yes' to continue, or 'no' to cancel: yeszReset cancelled.zUnlinking %s databaser   )r   passwd/unix_sockethostportzDROP DATABASE IF EXISTS `%s`r   zCHARACTER SET utf8zCREATE DATABASE `z` zExecuting... "%s"	template1r   z
                    SELECT pg_terminate_backend(pg_stat_activity.pid)
                    FROM pg_stat_activity
                    WHERE pg_stat_activity.datname = '%s';
                z	Error: %szDROP DATABASE "%s";zCREATE DATABASE "%s"z WITH OWNER = "%s" z ENCODING = 'UTF8'z TABLESPACE = %s;;zUnknown database engine %szReset successful. )!r   warningswarnr   r   	DATABASESgetr   r
   inputprintr   logginginfoosunlinkOSErrorr	   MySQLdb
startswithintconnectquerystripr   psycopg2set_isolation_levelcursorexecuteProgrammingError	exceptionstrDEFAULT_TABLESPACE)r"   argsoptionsr(   dbinfoenginer   r   database_namedatabase_hostdatabase_portr   r3   confirmDatabasekwargs
connection
drop_queryutf8_supportcreate_queryconn_paramsrP   close_sessions_queryes                           r%   handlezCommand.handleA   s    :&8 000MNPkxyzzzzx(H#''11>4x?@@@H%%JLLLxL-L--WL[\bLcLcIT8]M=v<&**V"4"4<:&L&**Z*@*@LH (D)PVZZ-?-?P=B`aaa

6**;m

6**;mK(	=! 		e 3@--B C CGG Ge$%%%F^##4f===	-((((   }$$&&&&" F '',, /(5}%%!.v 4!$]!3!3v))33F33J7-GJ!():!;U22AULL8E||TLL,j999Z(((L,l;;;\//112222)))''''%{3K +&*F# 3*2J' 4&3F# 4&3F#))88K88J**1---&&((F'( 
;( $	($$
 02F2L2L2N2NOOO;NN#788880 ; ; ;%k3q66::::::::; 1=@JL,j9997z****, 7 7 7!+s1vv666666667 4mCL @ 7% ??00L* $ 3h6Q QQ#L,l;;;NN<((((;fDEEE>>W]3>%&&&&& >sB   )G 
GGM 
N%"NN/O 
O;"O66O;)__name__
__module____qualname__r   r    r   rg   __classcell__)r$   s   @r%   r   r      s`        2D'
 '
 '
 '
 '
R A' A' ]A' A' A' A' A'r&   r   )__doc__rE   rC   r=   django.confr   django.core.management.baser   r   	django.dbr   django_extensions.settingsr   r   r	   "django_extensions.management.mysqlr
   "django_extensions.management.utilsr   #django_extensions.utils.deprecationr   r   r<   r&   r%   <module>rt      s    
 
			               A A A A A A A A & & & & & & X X X X X X X X X X > > > > > > < < < < < < K K K K K Kn' n' n' n' n'k n' n' n' n' n'r&   