
    jg^                         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y)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                   2     e Zd ZdZ fdZed        Z xZS )Commandz%Resets the database for this project.c                    t         |   |       |j                  dddddd       |j                  dd	d
dd       |j                  ddddd d       |j                  ddddd d       |j                  ddddd d       |j                  ddddd d       |j                  dddd t        d!       |j                  d"t        d#t        z  $       |j                  d%d&d	d'dd(       y ))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     i/var/www/html/Stanley/venv/lib/python3.12/site-packages/django_extensions/management/commands/reset_db.pyr    zCommand.add_arguments   sO   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         k7  r!t        j                  dt        d       |d   }t        j
                  j                  |      }|t        d|z        |j                  d      }d	x}x}x}x}	}
|d
k(  rt        |      \  }}}}	}
|d   xs |j                  d      xs |}|d   xs |j                  d      xs |}|d   xs |}|d   xs |j                  d      xs |}|d	k(  rt        d      |j                  d      xs |	}	|j                  d      xs |
}
|d   }|d   rt        d|d      }nd}|dk7  rt        d       y|t        v r.	 t        j                  d|       t        j                  |       n6|t"        v rddl}||d}|	j'                  d      r|	|d<   n|	|d <   |
rt)        |
      |d!<    |j*                  d6i |}d"|z  }|d#   rd	nd$}d%|d&|}t        j                  d'|       |j-                  |       t        j                  d'|       |j-                  |j/                                ns|t0        v r\t2        j4                  j7                  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|j?                  d       |jA                         }|d+   r;d,|z  }t        j                  d'|j/                                	 |jC                  |       d.|z  }t        j                  d'|       	 |jC                  |       d/|z  }|r|d0|z  z  }|d1z  }t        jJ                  r|d2t        jJ                  z  z  }n|d3z  }t        j                  d'|       |jC                  |       nt        d4|z        |dk\  s|d   rt        d5       yy# t         $ r Y "w xY w# |jD                  $ r)}t        jF                  d-tI        |             Y d}~d}~ww xY w# |jD                  $ r*}t        jF                  d-tI        |             Y d}~d}~ww xY w)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.handleB   s    :&8 00MMNPkxyzx(H##''1>4x?@@H%JLLLxL-L--WL[\bLcIT8]M=v<&**V"4<:&L&**Z*@LH (D)PVZZ-?P=B`aa

6*;m

6*;mK(	=! 3@B CG Ge$%^#4f=		-( }$&"F '',(5}%!.v!$]!3v)))3F3J7-GJ!():!;2AUL8E|TLLL,j9Z(LL,l;\//12))$>>33I>L*+#[1K&*F#*2J'&3F#&3F#)))8K8J(,
%..q1&&(F'(( $	($$
 02F2L2L2NO;NN#78 1=@JLL,j97z* 4mCL 7% ??00L** 3h6Q6Q QQ#LL,l;NN<(;fDEE>W]3%& 4e  r  00 ;%%k3q6::; ,, 7!!+s1v667sB    +O O) <P$ 	O&%O&)P!8PP!$Q3QQ)__name__
__module____qualname__r   r    r   rm   __classcell__)r$   s   @r%   r   r      s$    2D'
R H' H'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 & X X > < Ku'k u'r&   