
    kh!                         d Z ddl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 https://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
--databasez>Nominates a database to run command for. Defaults to the "%s".)r   r   z-cz--close-sessionsclose_sessionszXClose database connections before dropping database (currently works on PostgreSQL only))superadd_argumentsadd_argumentr   )selfparser	__class__s     e/var/www/histauto/venv/lib/python3.11/site-packages/django_extensions/management/commands/reset_db.pyr    zCommand.add_arguments   s   f%%% M 	 	
 	
 	
 	"F 	 	
 	
 	
 	P 	 	
 	
 	
 	( 	 	
 	
 	
 	T 	 	
 	
 	
 	H 	 	
 	
 	
 	$M 	 	
 	
 	
 	$Q 	 	
 	
 	
 	!3 	 	
 	
 	
 	
 	
    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        d6i |}d"|z  }|d#         rd	nd$}d%|d&|}t          j        d'|           |                    |           t          j        d'|           |                    |                                           n|t0          v rt2          j                            d(          }|rddl}nddl}dd)i}|r||d<   |r||d<   |	r|	|d <   |
r|
|d!<    |j        d6i |}|rd*|_        n|                    d           |                                 }|d+         r|d,|z  }t          j        d'|                                           	 |!                    |           n9# |j"        $ r,}t          j#        d-tI          |                     Y d}~nd}~ww xY wd.|z  }t          j        d'|           	 |!                    |           n9# |j"        $ r,}t          j#        d-tI          |                     Y d}~nd}~ww xY wd/|z  }|r|d0|z  z  }|d1z  }t          j%        r|d2t          j%        z  z  }n|d3z  }t          j        d'|           |!                    |           nt          d4|z            |dk    s|d         rt          d5           dS dS )7z
        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"psycopg	template1Tr   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   	importlibutil	find_specr:   psycopg2
autocommit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has_psycopg3conn_paramsrU   close_sessions_queryes                            r%   handlezCommand.handled   s+    :&8 000MD+   
 x(H#''11>4x?@@@H%%JLLLxL-L--W'' JT8]M= v<&**V"4"4<:&L&**Z*@*@LH (D)PVZZ-?-?P=BQ   

6**;m

6**;mK(	=! 	e !==#	 	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)))$>33I>>L ,*****++++#[1K +&*F# 3*2J' 4&3F# 4&3F#))88K88J 2(,
%%..q111&&((F'( ;
 $$ % 02F2L2L2N2NOOO;NN#788880 ; ; ;%k3q66::::::::; />JL,j9997z****, 7 7 7!+s1vv666666667 2MAL > 5 ==00L* $ 3h6Q QQ#L,l;;;NN<((((;fDEEE>>W]3>%&&&&& >sB   )G 
GG5N 
O"N<<OO5 5
P+?"P&&P+)__name__
__module____qualname__r   r    r   rm   __classcell__)r$   s   @r%   r   r      se        2DH
 H
 H
 H
 H
T W' W' ]W' W' W' W' W'r&   r   )__doc__importlib.utilrO   rF   rD   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>r{      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e' e' e' e' e'k e' e' e' e' e'r&   