
    h                     r    S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJrJr   " S S	\5      rg
)    )
exceptions)BaseCommand)	force_str)IntegrityError)
connection)CloneSchema)get_tenant_modelget_tenant_domain_modelc                      \ rS rSrSr\" 5       R                  R                   V Vs/ s H+  nUR                  (       d  M  UR                  (       a  M)  UPM-     snn r
\" 5       R                  R                   V Vs/ s H+  nUR                  (       d  M  UR                  (       a  M)  UPM-     snn rS rS rS rS rS rSrg	s  snn f s  snn f )
Command
   zClones a tenantc                 z   UR                  SSS9  UR                  SSS9  UR                  SSS9  U R                   H-  nUR                  SUR                  -  S	UR                  -  S9  M/     U R                   H-  nUR                  S
UR                  -  SUR                  -  S9  M/     UR                  SSSS9  g )Nz--clone_fromz Specifies which schema to clone.)helpz--clone_tenant_fieldszClone the tenant fields.z	--db_userz1the user for the database the default is postgresz--%szSpecifies the %s for tenant.z--domain-%sz)Specifies the %s for the tenant's domain.z-s
store_truezCreate a superuser afterwards.)actionr   )add_argumenttenant_fieldsattnamedomain_fields)selfparserfields      a/var/www/html/env/lib/python3.13/site-packages/django_tenants/management/commands/clone_tenant.pyadd_argumentsCommand.add_arguments   s    N!C 	 	E 	3!; 	 	= 	K!T 	 	V ''E 6%Cemm%S   U ( ''E =%PSXS`S`%`   b ( 	D!A 	 	C    c                     [        U5      $ )z3Wrapper around 'input' for overriding while testing)input)r   questions     r   _inputCommand._input*   s    Xr   c           	         [        5       nUR                  R                  5       n0 nU R                   H-  nUR	                  UR
                  S 5      nXuUR
                  '   M/     0 nU R                   H0  nUR	                  SUR
                  -  S 5      nXxUR
                  '   M2     UR	                  S5      n	U	S:X  d  U	cq   U R                  S5      n	U	S:X  aI  U R                  R                  SR                  U V
s/ s H  n
SU
R                  -  PM     sn
5      5        OOMc  U	S:X  a  Ml  U	c  Mq  UR	                  S	5      nUb  UR                  5       S
;  a,  U R                  S5      nUc  M  UR                  5       S
;  a  M,  UR                  5       S;   aR  UR	                  S5      nUS:X  d  Uc  U R                  S5      nUS:X  a  M  Uc  M  XS'   U R                  " SU	SS.UD6nO U R                   H  nUR	                  UR
                  S5      S:X  d  M%  UR                  nUR                  5       nU(       a
  U< SU< S3nU R                  [!        SU-  5      5      =(       d    UnXuUR
                  '   M     U R                  " SU	SS.UD6nUb  O0 nM   UR"                  US'   U R                   H  nUR	                  UR
                  S5      S:X  d  M%  UR                  nUR                  5       nU(       a
  U< SU< S3nU R                  [!        SU-  5      5      =(       d    UnXxUR
                  '   M     U R$                  " S0 UD6nUb  g 0 nM  s  sn
f )Nz	domain_%s
clone_from Tz+Clone Tenant Schema ('?' to list schemas): ?
z%sclone_tenant_fields)noyestruefalsezClone Tenant tenant fields: )r)   r*   schema_namezNew tenant schema name: )clone_schema_fromr'   z (leave blank to use 'z')z%s: F	tenant_id )r	   objectsallr   getr   r   r    stdoutwritejoinr,   lowerstore_tenantverbose_nameget_defaultr   idstore_tenant_domain)r   argsoptionstenant_modelall_tenantstenant_datar   input_valuedomain_datar-   tr'   new_schema_nametenant	input_msgdefaultdomains                    r   handleCommand.handle.   sP   ')"**..0''E!++emmT:K)4& ( ''E!++kEMM&A4HK)4& ( $KK52%):)B$(KK0]$^!$+KK%%dii{0[{!1E{0[&\]   2%):)B &kk*?@!)-@-F-F-HPn-n"&++.L"M ")-@-F-F-HPn-n $$&/9%kk-8O!R'?+B"&++.H"I "R'?+B)8&&& 69J;?6)46F !//E"u}}b9R?$)$6$6	"'"3"3"5"JSU\(]I&*kk)FY<N2O&P&[T[5@EMM2 0 ** :=N?D:-8: %  " '-yyK$++??5=="5; % 2 2I#//1GFOQX$Y	"&++i8J.K"L"WPWK1<. , --<<F!K G 1\s   <Mc                 ^   [         R                  " 5          U(       a3  [        5       R                  R	                  US9nS Ul        US   Ul        O[        5       " S0 UD6nSUl        UR                  5         [        5       nUR                  XR                  SS9  U$ ! [        R                   aA  nU R                  R                  SSR                  UR                   5      -  5         S nAg S nAf["         a1  nU R                  R                  S[%        U5      -   5         S nAg S nAff = f)	N)r,   r,   F)set_connection	Error: %s; Error: r/   )r   set_schema_to_publicr	   r0   r2   pkr,   auto_create_schemasaver   clone_schemar   ValidationErrorstderrr4   r5   messagesr   str)r   r-   r'   fieldsrE   rT   es          r   r7   Command.store_tenantt   s    '')	")+3377DU7V 	%+M%:")+5f5(-F%KKM&=L%%&79K9K\a%bM)) 	KKkDIIajj,AAB 	KKi#a&01	s$   BB D,27C..D,;'D''D,c                     [        5       R                  R                  " S0 UD6nUR                  5         U$ ! [        R
                   aA  nU R                  R                  SSR                  UR                  5      -  5         S nAg S nAf[         a1  nU R                  R                  S[        U5      -   5         S nAg S nAff = f)NrM   rN   rO   r/   )r
   r0   createrS   r   rU   rV   r4   r5   rW   r   rX   )r   rY   rH   rZ   s       r   r;   Command.store_tenant_domain   s    		,.66==GGFKKMM)) 	KKkDIIajj,AAB 	KKi#a&01	s!   58 C7BC'CCr/   N)__name__
__module____qualname____firstlineno__r   r	   _metarY   editableprimary_keyr   r
   r   r   r    rI   r7   r;   __static_attributes__).0r   s   00r   r   r   
   s    D )9(:(@(@(G(G B(Gu /4/@/@ (G BM )@(A(G(G(N(N B(Nu /4/@/@ (N BMC,DL,
yBBs#   C CC;C	C	'C	r   N)django.corer   django.core.management.baser   django.utils.encodingr   django.db.utilsr   	django.dbr   django_tenants.cloner   django_tenants.utilsr	   r
   r   r/   r   r   <module>ro      s(    " 3 + *   , JJk Jr   