Ë
    qûàg^  ã                   óž   — 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     €úl/var/www/skyplay_api_hub/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ð 	ô 	
ð 	×ÑØ�, w°ZÈØTð 	ô 	
ð 	×ÑØ�* W°8ÀTØHð 	ô 	
ð 	×ÑØ�* W°8ÔEUØMð 	ô 	
ð 	×ÑØÔ"2ØZÔ]mÑmð 	ô 	
ð 	×ÑØÐ$¨\Ð@PÐZ_Ø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 r»d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Ü�M‰MÐNÔPkÐxyÕzØ˜xÑ(ˆHä×#Ñ#×'Ñ'¨Ó1ˆØˆ>ÜÐ4°xÑ?Ó@Ð@à—‘˜HÓ%ˆàJLÐLˆÐLˆxÐL˜-ÐL¨-¸-Ø�WÒÜL[Ð\bÓLcÑIˆT�8˜]¨M¸=à�v‰Ò< &§*¡*¨VÓ"4Ò<¸ˆØ˜:Ñ&ÒL¨&¯*©*°ZÓ*@ÒLÀHˆØ˜Ñ Ò( Dˆà Ñ)ÒP¨V¯Z©Z¸Ó-?ÒPÀ=ˆØ˜BÒÜÐ`ÓaÐaàŸ
™
 6Ó*Ò;¨mˆØŸ
™
 6Ó*Ò;¨mˆà˜KÑ(ˆ	Ø�=Ò!Ýò 3@ðBó C‰Gð ˆGà�eÒÜÐ$Ô%Øà”^Ñ#ðÜ—‘Ð4°fÔ=Ü—	‘	˜-Ö(ð ”}Ñ$Û&àØ"ñˆFð ×'Ñ'¨Ô,Ø(5��}Ò%à!.��v‘áÜ!$ ]Ó!3��v‘à)˜×)Ñ)Ñ3¨FÑ3ˆJØ7¸-ÑGˆJØ!(Ð):Ò!;™2ÐAU‰LÚ8EÁ|ÐTˆLÜ�L‰LÐ,¨jÔ9Ø×Ñ˜ZÔ(Ü�L‰LÐ,¨lÔ;Ø×Ñ˜\×/Ñ/Ó1Ö2ØÔ)Ò)Ü$Ÿ>™>×3Ñ3°IÓ>ˆLÙÜ*ã+à# [Ð1ˆKÙØ&*�˜FÑ#ÙØ*2�˜JÑ'ÙØ&3�˜FÑ#ÙØ&3�˜FÑ#à)˜×)Ñ)Ñ8¨KÑ8ˆJÙØ(,�
Õ%à×.Ñ.¨qÔ1Ø×&Ñ&Ó(ˆFàÐ'Ò(ð(ð $ñ	($Ð$ô
 —‘Ð0Ð2F×2LÑ2LÓ2NÔOð;Ø—N‘NÐ#7Ô8ð 1°=Ñ@ˆJÜ�L‰LÐ,¨jÔ9ð7Ø—‘˜zÔ*ð 4°mÑCˆLÙØÐ 7¸%Ñ ?Ñ?�ØÐ0Ñ0ˆLä×*Ò*ØÐ 3´h×6QÑ6QÑ QÑQ‘à Ñ#�ä�L‰LÐ,¨lÔ;Ø�N‰N˜<Õ(äÐ;¸fÑDÓEÐEà˜Š>˜W ]Ò3ÜÐ%Õ&ð 4øôe ò Ùðûðr  ×0Ñ0ò ;Ü×%Ñ% k´3°q³6×:Ñ:ûð;ûð ×,Ñ,ò 7Ü×!Ñ! +¬s°1«v×6Ò6ûð7úsB   Å +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$   ø„ Ø2€Dô'
ð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&   