
    g5                         d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZmZ ddlmZmZ dd	lmZ dd
lmZ  G d de      ZdZ G d de      Zy)z*
Management utility to create superusers.
    N)get_user_model)get_default_username)validate_password)
exceptions)BaseCommandCommandError)DEFAULT_DB_ALIASconnections)cached_property)capfirstc                       e Zd Zy)NotRunningInTTYExceptionN)__name__
__module____qualname__     /var/www/python.vincentserveurtest.ovh/public_html/venv/lib/python3.12/site-packages/django/contrib/auth/management/commands/createsuperuser.pyr   r      s    r   r   passwordc                   f     e Zd ZdZdZdZ fdZd Z fdZd Z	ddZ
dd	Zed
        Zd Z xZS )CommandzUsed to create a superuser.T)stdinc                     t        |   |i | t               | _        | j                  j                  j                  | j                  j                        | _        y N)super__init__r   	UserModel_meta	get_fieldUSERNAME_FIELDusername_field)selfargskwargs	__class__s      r   r   zCommand.__init__   sI    $)&)')"nn22<<NN))
r   c                    |j                  d| j                  j                  z  d       |j                  ddddd| j                  j                  z  	       |j                  d
t        t	        t
              d       | j                  j                  D ]  }| j                  j                  j                  |      }|j                  rj|j                  j                  r8|j                  j                  j                  j                  st        d|z        |j                  d|z  dd|z  f       |j                  d|z  d|z          y )Nz--%sz&Specifies the login for the superuser.)helpz	--noinputz
--no-inputstore_falseinteractivezTells Django to NOT prompt the user for input of any kind. You must use --%s with --noinput, along with an option for any other required field. Superusers created with --noinput will not be able to log in until they're given a valid password.)actiondestr'   z
--databasez4Specifies the database to use. Default is "default".)defaultchoicesr'   z\Required field '%s' specifies a many-to-many relation through model, which is not supported.appendz?Specifies the %s for the superuser. Can be used multiple times.)r*   r'   z#Specifies the %s for the superuser.)add_argumentr   r    r	   tupler
   REQUIRED_FIELDSr   r   many_to_manyremote_fieldthroughauto_createdr   )r"   parser
field_namefields       r   add_argumentszCommand.add_arguments&   sa   T^^2229 	 	
 	 N ..//	0 	 	
 	$+&G	 	 	
 ..88JNN((22:>E!!&&..!..66<<II&JLVW 
 ''+'.0:; (  ##Z'>K $ + 9r   c                 l    |j                  dt        j                        | _        t        |   |i |S )Nr   )getsysr   r   execute)r"   r#   optionsr%   s      r   r=   zCommand.executeX   s-    [[#))4
w000r   c                     || j                   j                     }|d   }i }| j                  j                  }	 | j                   j                  j                  t               d |t        <   	 |d   ri }t        | j                  d      r | j                  j                         st        t        |      }|r3| j                  |||      }	|	r:| j                  j!                  |	       d }n|dk(  rt#        dt%        |      z        |q| j'                  | j                  |      }
| j)                  | j                  |
|      }|r3| j                  |||      }	|	r| j                  j!                  |	       d }p|q||| j                   j                  <   | j                  j*                  r%| j                  j*                  j-                  |      n||| j                   j                  <   | j                   j.                  D ]2  }| j                   j                  j                  |      }||   ||<   ||   |j1                  ||   d       ||<   ||   | j'                  |      }
| j)                  ||
      }|||<   |j2                  rc|ra|j5                         s!d ||<   | j                  j!                  d       l|j7                  d      D cg c]  }|j5                          c}||<   ||   |j2                  s||   ||<   |j8                  s|j*                  j-                  ||         ||<   5 t        |v r|t           t;        j:                         }t;        j:                  d	      }||k7  r| j                  j!                  d
       ]|j5                         dk(  r| j                  j!                  d       	 t=        | | j                   di |       ||t        <   t        |v r|t           nt        |v r,dtH        jJ                  v rtH        jJ                  d   |t        <   |DtH        jJ                  jM                  d| j                   j                  jO                         z         }|"t#        d| j                   j                  z        | j                  |||      }	|	rt#        |	      ||| j                   j                  <   | j                   j.                  D ]  }d|jO                         z   }||   xs tH        jJ                  jM                  |      }| j                   j                  j                  |      }|sE|jP                  r+||   dk(  s"tH        jJ                  jM                  |      dk(  rt#        d|z        |j1                  |d       ||<   |j2                  stS        ||   tT              s||   j7                  d      D cg c]  }|j5                          c}||<     | j                   jV                  jY                  |      jZ                  di | |d   dk\  r| j\                  j!                  d       y y # t        j                  $ r Y w xY wc c}w # t        j>                  $ rc}| j                  j!                  djA                  |jB                               tE        d      }|jG                         dk7  rY d }~Y d }~
d }~ww xY wc c}w # t^        $ r3 | j                  j!                  d       ta        jb                  d       Y y t        j>                  $ r)}t#        djA                  |jB                              d }~wt        $ r | j\                  j!                  d       Y y w xY w)Ndatabaser)   isatty)r@    %s cannot be blank.z"Error: This field cannot be blank.,zPassword (again): z#Error: Your passwords didn't match.z&Error: Blank passwords aren't allowed.
z:Bypass password validation and create user anyway? [y/N]: yDJANGO_SUPERUSER_PASSWORDDJANGO_SUPERUSER_z!You must use --%s with --noinput.	verbosity   zSuperuser created successfully.z
Operation cancelled.; zSuperuser creation skipped due to not running in a TTY. You can run `manage.py createsuperuser` in your project to create one manually.r   )2r   r    r!   verbose_namer   r   PASSWORD_FIELDr   FieldDoesNotExisthasattrr   rA   r   r   _validate_usernamestderrwriter   r   _get_input_messageget_input_datar3   modelr1   cleanr2   stripsplitmany_to_onegetpassr   ValidationErrorjoinmessagesinputlowerosenvironr;   upperblank
isinstancestr_default_manager
db_managercreate_superuserstdoutKeyboardInterruptr<   exit)r"   r#   r>   usernamer@   	user_dataverbose_field_namefake_user_datadefault_username	error_msgmessager7   r8   input_valuepkr   	password2errresponseenv_varvaluees                         r   handlezCommand.handle\   s    4>>889:&	!00==	-NN  **>:
 )-In%V	}% "$4::x09J9J9L22#7#J  $ 7 7 "4h!I !)))4#'^&-9K0LL  &"55++-=G  $22++W6F H  $($;$;$&8(%	 % KK--i8'+H$ & <D	$..778 **77 ''44::8D! t~~<<= #'.."@"@J NN00:::FE,3J,?Ij) ,805Ij<QSW0X	*-#J/7"&"9"9%"@&*&9&9%&I0;	*- --+#.#4#4#68<	* 5 $ 1 12V W (5@5F5Fs5K55Kr
5K5Ij1 $J/7 !--5>z5Jz2((5:5G5G5M5M%j16z2- #A6 %	1i6O6W&0H '0D EI9,))*OP ~~'2-))*RS %))^T^^5Un5UV 19In-) %	1i6O6W2 #i/3rzzA02

;V0WIn- #!zz~~+dnn.K.K.Q.Q.SS H #&;..778 
 !% 7 7 "4h!I !*955;C	$..778"&.."@"@J1J4D4D4FFG#J/J2::>>'3JE NN00:::FE  ;;#J/259PTV9V$*?*L  -2KKt,DIj)))j:9NPS.T1::1F1L1LS1Q11Q2BHHJ1Q1	*- #A$ RDNN++66x@QQ  {#q(!!"CD )_ ++ 		z54 &55 %))$))CLL*AB#(X$ $>>+s2$ 3%b1 ! 	KK67HHQK)) 	6tyy455' 	KK*	s   )Y +D[2 9E[2 	Y/ [2 , [2 B0[2 ?Y4 [2 7F9[2 1[2 [2 [-2A![2 Y,+Y,/[2 4[*A[%[2 %[**[2 29^-^?$]##'^^c                    t        |      }|r|dk(  r|}	 |j                  |d      }|S # t        j                  $ rD}| j                  j                  ddj                  |j                        z         d}Y d}~|S d}~ww xY w)zm
        Override this method if you want to customize data inputs or
        validation exceptions.
        rB   Nz	Error: %srK   )r^   rV   r   r[   rQ   rR   r\   r]   )r"   r8   rr   r,   	raw_valuevalrz   s          r   rT   zCommand.get_input_data   s}    
 'N	yBI	++i.C
 
	 )) 	KKkDIIajj,AABC
		s   * B9A<<Bc                 (   t        |j                        |rd|z  nd|j                  rdd|j                  j                  j                  j
                  d|j                  r|j                         n|j                  j                  ddS ddS )Nz (leave blank to use '%s')rB   z (.)z: )	r   rL   r3   rU   r   object_namer2   m2m_target_field_namer7   )r"   r8   r,   s      r   rS   zCommand._get_input_message  s    U''(6=(722E %% &&,,22>> !-- 335"//::;	 
	
 	
 
	
 	
r   c                       j                   j                  ryt         fd j                  j                  j
                  D              S )NTc              3      K   | ]D  }t        |j                        d k(  xr& |j                  d   j                  j                  k(   F yw)rJ   r   N)lenfieldsr!   name).0unique_constraintr"   s     r   	<genexpr>z-Command.username_is_unique.<locals>.<genexpr>'  sY      
 &S! !(()Q. H!((+t/B/B/G/GGH%Rs   A
A)r!   uniqueanyr   r   total_unique_constraints)r"   s   `r   username_is_uniquezCommand.username_is_unique#  sA    %% 
 &*^^%9%9%R%R
 
 	
r   c                    | j                   r:	 | j                  j                  j                  |      j	                  |       d|z  S |sdt        |      z  S 	 | j                  j                  |d       y# | j                  j
                  $ r Y Iw xY w# t        j                  $ r%}dj                  |j                        cY d}~S d}~ww xY w)z=Validate username. If invalid, return a string error message.z Error: That %s is already taken.rC   NrK   )r   r   rf   rg   get_by_natural_keyDoesNotExistr   r!   rV   r   r[   r\   r]   )r"   rl   rn   r@   rz   s        r   rP   zCommand._validate_username-  s    ""O//::8DWW :<NNN(84F+GGG	)%%h5 >>..  )) 	)99QZZ((	)s/   4A5 B 5BBC'CCCr   )r   r   r   r'   requires_migrations_checksstealth_optionsr   r9   r=   r{   rT   rS   r   r   rP   __classcell__)r%   s   @r   r   r      sM    (D!% O
0d1bH 
& 
 
)r   r   )__doc__rZ   r`   r<   django.contrib.authr   django.contrib.auth.managementr   'django.contrib.auth.password_validationr   django.corer   django.core.management.baser   r   	django.dbr	   r
   django.utils.functionalr   django.utils.textr   	Exceptionr   rM   r   r   r   r   <module>r      sN     	 
 . ? E " A 3 3 &	y 	 c)k c)r   