
    `fZ4                         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 dd	lmZ dd
lmZ  G d de          ZdZ G d de          ZdS )z*
Management utility to create superusers.
    N)get_user_model)get_default_username)validate_password)
exceptions)BaseCommandCommandError)DEFAULT_DB_ALIAS)cached_property)capfirstc                       e Zd ZdS )NotRunningInTTYExceptionN)__name__
__module____qualname__     i/var/www/html/env/lib/python3.11/site-packages/django/contrib/auth/management/commands/createsuperuser.pyr   r      s        Dr   r   passwordc                   l     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                      j        |i | t                      | _        | j        j                            | j        j                  | _        d S N)super__init__r   	UserModel_meta	get_fieldUSERNAME_FIELDusername_field)selfargskwargs	__class__s      r   r   zCommand.__init__   sW    $)&)))'))"n2<<N)
 
r   c                 "   |                     d| j        j        z  d           |                     ddddd| j        j        z  	           |                     d
t          d           | j        j        D ]}| j        j                            |          }|j        rT|j        j	        r(|j        j	        j        j
        st          d|z            |                     d|z  dd|z  f           ||                     d|z  d|z             d S )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".)defaultr&   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	   REQUIRED_FIELDSr   r   many_to_manyremote_fieldthroughauto_createdr   )r!   parser
field_namefields       r   add_argumentszCommand.add_arguments%   s   T^229 	 	
 	
 	
 	 N ./	0 	 	
 	
 	
 	$G 	 	
 	
 	

 .8 	 	JN(22:>>E! &.!.6<I 'JLVW  
 ''+'.0:; (     ##Z'>K $    +	 	r   c                     |                     dt          j                  | _         t                      j        |i |S )Nr   )getsysr   r   execute)r!   r"   optionsr$   s      r   r:   zCommand.executeV   s5    [[#)44
uww0000r   c                 n   || j         j                 }|d         }i }| j        j        }	 | j         j                            t                     d |t          <   n# t          j        $ r Y nw xY w	 |d         ri }t          | j
        d          r | j
                                        st          t          |          }|r6|                     |||          }	|	r| j                            |	           d }n%|dk    rt#          dt%          |          z            |q|                     | j        |          }
|                     | j        |
|          }|r6|                     |||          }	|	r| j                            |	           d }q|q||| j         j        <   | j        j        r| j        j                            |          n||| j         j        <   | j         j        D ]/}| j         j                            |          }||         ||<   ||         |                    ||         d           ||<   ||         |                     |          }
|                     ||
          }|||<   |j        rX|rV|                                s d ||<   | j                            d           ud |                    d	          D             ||<   ||         |j        s||         ||<   |j        r#|j                            ||                   ||<   1t          |v rB|t                   4t;          j                    }t;          j        d
          }||k    r| j                            d           `|                                dk    r| j                            d           	 t=          | | j         di |           n{# t          j        $ ri}| j                            d                     |j!                             tE          d          }|#                                dk    rY d }~Y d }~nd }~ww xY w||t          <   t          |v r|t                   4nt          |v r(dtH          j%        v rtH          j%        d         |t          <   |>tH          j%        &                    d| j         j        '                                z             }|t#          d| j         j        z            |                     |||          }	|	rt#          |	          ||| j         j        <   | j         j        D ]}d|'                                z   }||         ptH          j%        &                    |          }| j         j                            |          }|sI|j(        r0||         dk    s#tH          j%        &                    |          dk    rt#          d|z            |                    |d           ||<   |j        rCtS          ||         tT                    r(d ||                             d	          D             ||<    | j         j+        ,                    |          j-        di | |d         dk    r| j.                            d           d S d S # t^          $ r2 | j                            d           ta          j1        d           Y d S t          j        $ r,}t#          d                     |j!                            d }~wt          $ r | j.                            d           Y d S w xY w)Ndatabaser(   isatty)r=    %s cannot be blank.z"Error: This field cannot be blank.c                 6    g | ]}|                                 S r   strip.0pks     r   
<listcomp>z"Command.handle.<locals>.<listcomp>   s-     5 5 5/1

5 5 5r   ,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.c                 6    g | ]}|                                 S r   rB   rD   s     r   rG   z"Command.handle.<locals>.<listcomp>   s-     1 1 1+-BHHJJ1 1 1r   	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   r>   r   r   _validate_usernamestderrwriter   r   _get_input_messageget_input_datar0   modelr.   cleanr/   rC   splitmany_to_onegetpassr   ValidationErrorjoinmessagesinputlowerosenvironr8   upperblank
isinstancestr_default_manager
db_managercreate_superuserstdoutKeyboardInterruptr9   exit)r!   r"   r;   usernamer=   	user_dataverbose_field_namefake_user_datadefault_username	error_msgmessager4   r5   input_valuer   	password2errresponseenv_varvaluees                        r   handlezCommand.handleZ   s=   4>89:&	!0=	-N **>:::
 )-In%%	 + 	 	 	D	
V	}% D "$4:x00 39J9J9L9L 322#7#J#J#J  
 $ 7 7 "4h! !I ! ()))444#'^^&-9K0L0LL   &"55+-= G  $22+W6F   H   %$($;$;$&8(% %	 % % K--i888'+H$ & <D	$.78 *7"D'4::8DDD! t~<= #'."@  J N0:::FFE,3J,?Ij) ,805Ij<QSW0X0X	*-#J/7"&"9"9%"@"@&*&9&9%&I&I0;	*- - + #.#4#4#6#6 )8<	* 5 $ 1 12V W W W (5 55@5F5Fs5K5K5 5 5Ij1 $J/7 !- K5>z5Jz2( 5:5G5M5M%j16 6z2
 %	11i6O6W&00H '0D E EI9,,))*OPPP ~~''2--))*RSSS %))^T^5U5Un5U5UVVVV%5 % % %))$))CL*A*ABBB#(X$ $ $>>++s22$HHHH 32222% 19In-) %	11i6O6W2 #i//3rzAA02
;V0WIn- #!z~~+dn.K.Q.Q.S.SS   H #&;.78  
 !% 7 7 "4h! !I ! 6*9555;C	$.78"&."@  J1J4D4D4F4FFG#J/J2:>>'3J3JE N0:::FFE   ; %#J/2559P9PTV9V9V$*?*L   -2KKt,D,DIj)) j:9NPS.T.T 1 11::1F1L1LS1Q1Q1 1 1	*- RDN+66x@@Q     {#q((!!"CDDDDD )(  	 	 	K6777HQKKKKKK) 	6 	6 	6tyy44555' 	 	 	K*     	sb   $A A+*A+/L9Z )O Z P=AP8-Z 8P==IZ 8\4\4"'\		'\43\4Nc                    t          |          }|r|dk    r|}	 |                    |d          }nS# t          j        $ rA}| j                            dd                    |j                  z             d}Y d}~nd}~ww xY w|S )zm
        Override this method if you want to customize data inputs or
        validation exceptions.
        r?   Nz	Error: %srP   )rb   r[   r   r_   rV   rW   r`   ra   )r!   r5   rv   r+   	raw_valuevalr}   s          r   rY   zCommand.get_input_data   s    
 'NN	 	 yBI	++i..CC) 	 	 	KkDIIaj,A,AABBBCCCCCC	 
s   2 B7A==Bc                     t          |j                  |rd|z  nd|j        rBd|j        j        j        j        d|j        r|                                n|j        j        dnddS )Nz (leave blank to use '%s')r?   z (.)z: )	r   rQ   r0   rZ   r   object_namer/   m2m_target_field_namer4   )r!   r5   r+   s      r   rX   zCommand._get_input_message  s    U'(((6=E(7222E ! "(.:::%3++---'23 3   
 	
r   c                 t      j         j        rdS t           fd j        j        j        D                       S )NTc              3   ~   K   | ]7}t          |j                  d k    o|j        d         j        j        k    V  8dS )rO   r   N)lenfieldsr    name)rE   unique_constraintr!   s     r   	<genexpr>z-Command.username_is_unique.<locals>.<genexpr>!  sf       
 
 " !())Q. H!(+t/B/GG
 
 
 
 
 
r   )r    uniqueanyr   r   total_unique_constraints)r!   s   `r   username_is_uniquezCommand.username_is_unique  sX    % 	4 
 
 
 
 &*^%9%R
 
 
 
 
 	
r   c                 z   | j         rM	 | j        j                            |                              |           d|z  S # | j        j        $ r Y nw xY w|sdt          |          z  S 	 | j                            |d           dS # t          j
        $ r$}d                    |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.r@   NrP   )r   r   rj   rk   get_by_natural_keyDoesNotExistr   r    r[   r   r_   r`   ra   )r!   rp   rr   r=   r}   s        r   rU   zCommand._validate_username'  s    " 	OO/::8DDWW   :<NNN >.     	H(84F+G+GGG	)%%h55555) 	) 	) 	)99QZ((((((((	)s/   2A   AA*B B:B5/B:5B:r   )r   r   r   r&   requires_migrations_checksstealth_optionsr   r6   r:   r~   rY   rX   r
   r   rU   __classcell__)r$   s   @r   r   r      s        (D!% O
 
 
 
 
/ / /b1 1 1 1 1b b bH    
 
 
 
 
 
 _
) ) ) ) ) ) )r   r   )__doc__r^   rd   r9   django.contrib.authr   django.contrib.auth.managementr   'django.contrib.auth.password_validationr   django.corer   django.core.management.baser   r   	django.dbr	   django.utils.functionalr
   django.utils.textr   	Exceptionr   rR   r   r   r   r   <module>r      s1     				 



 . . . . . . ? ? ? ? ? ? E E E E E E " " " " " " A A A A A A A A & & & & & & 3 3 3 3 3 3 & & & & & &	 	 	 	 	y 	 	 	 ^) ^) ^) ^) ^)k ^) ^) ^) ^) ^)r   