§
    kÍâhå!  ã                   ó¦   — 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 �nÏw xY w|t"          v rËd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 �rÛt2          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ˆØˆ>ÝÐ4°xÑ?Ñ@Ô@Ð@à—’˜HÑ%Ô%ˆàJLÐLˆÐLˆxÐL˜-ÐL¨-¸-Ø�WÒÐå Ñ'Ô'ñ JˆT�8˜]¨M¸=ð �vŒÐ< &§*¢*¨VÑ"4Ô"4Ð<¸ˆØ˜:Ô&ÐL¨&¯*ª*°ZÑ*@Ô*@ÐLÀHˆØ˜Ô Ð( Dˆà Ô)ÐP¨V¯ZªZ¸Ñ-?Ô-?ÐPÀ=ˆØ˜BÒÐÝØQñô ð ð Ÿ
š
 6Ñ*Ô*Ð;¨mˆØŸ
š
 6Ñ*Ô*Ð;¨mˆà˜KÔ(ˆ	Ø�=Ô!ð 	Ý�eð !�=�=ð#ñ	ô 	ˆGˆGð ˆGà�eÒÐÝÐ$Ñ%Ô%Ð%ØˆFà•^Ð#Ð#ðÝ”Ð4°fÑ=Ô=Ð=Ý”	˜-Ñ(Ô(Ð(Ñ(øÝð ð ð Ø‘ðøøøà•}Ð$Ð$Ø&Ð&Ð&Ð&ð Ø"ðð ˆFð ×'Ò'¨Ñ,Ô,ð /Ø(5��}Ñ%Ð%à!.��v‘àð 4Ý!$ ]Ñ!3Ô!3��v‘à)˜Ô)Ð3Ð3¨FÐ3Ð3ˆJØ7¸-ÑGˆJØ!(Ð):Ô!;ÐU˜2˜2ÐAUˆLˆLØ8E¸¸À|À|ÐTˆLÝŒLÐ,¨jÑ9Ô9Ð9Ø×Ò˜ZÑ(Ô(Ð(ÝŒLÐ,¨lÑ;Ô;Ð;Ø×Ò˜\×/Ò/Ñ1Ô1Ñ2Ô2Ð2Ñ2ØÕ)Ð)Ñ)Ý$œ>×3Ò3°IÑ>Ô>ˆLØð ,Ø*Ð*Ð*Ð*Ð*à+Ð+Ð+Ð+à# [Ð1ˆKØð +Ø&*�˜FÑ#Øð 3Ø*2�˜JÑ'Øð 4Ø&3�˜FÑ#Øð 4Ø&3�˜FÑ#à)˜Ô)Ð8Ð8¨KÐ8Ð8ˆJØð 2Ø(,�
Ô%Ð%à×.Ò.¨qÑ1Ô1Ð1Ø×&Ò&Ñ(Ô(ˆFàÐ'Ô(ð ;ðð
 $ñ$ð %õ ”Ð0Ð2F×2LÒ2LÑ2NÔ2NÑOÔOÐOð;Ø—N’NÐ#7Ñ8Ô8Ð8Ð8øØÔ0ð ;ð ;ð ;ÝÔ% kµ3°q±6´6Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:øøøøð;øøøð /°Ñ>ˆJÝŒLÐ,¨jÑ9Ô9Ð9ð7Ø—’˜zÑ*Ô*Ð*Ð*øØÔ,ð 7ð 7ð 7ÝÔ! +­s°1©v¬vÑ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6øøøøð7øøøð 2°MÑAˆLØð >ØÐ 5¸Ñ =Ñ=�ØÐ0Ñ0ˆLåÔ*ð $ØÐ 3µhÔ6QÑ QÑQ��à Ñ#�åŒLÐ,¨lÑ;Ô;Ð;Ø�NŠN˜<Ñ(Ô(Ð(Ð(åÐ;¸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   ø€ € € € € Ø2€Dð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&   