
    Gwg3                         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y)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y)NotRunningInTTYExceptionN)__name__
__module____qualname__     n/var/www/horilla/myenv/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        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".)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29 	 	
 	 N ..//	0 	 	
 	$G 	 	

 ..88 	JNN((22:>E!!&&..!..66<<II&JLVW 
 ''+'.0:; (  ##Z'>K $ +	r   c                 l    |j                  dt        j                        | _        t        |   |i |S )Nr   )getsysr   r   execute)r!   r"   optionsr$   s      r   r:   zCommand.executeV   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           nt        |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                  |      }|st#        d|z        | j                   j                  j                  |      }|j1                  |d       ||<   |j2                  stQ        ||   tR              s||   j7                  d      D cg c]  }|j5                          c}||<     | j                   jT                  jW                  |      jX                  di | |d   dk\  r| jZ                  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 }~tY d }~d }~ww xY wc c}w # t\        $ r3 | j                  j!                  d       t_        j`                  d       Y y t        j>                  $ r)}t#        djA                  |jB                              d }~wt        $ r | jZ                  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   )1r   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/   stripsplitmany_to_onegetpassr   ValidationErrorjoinmessagesinputlowerosenvironr8   upper
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_valuepkr   	password2errresponseenv_varvaluees                         r   handlezCommand.handleZ   s   4>>889:&	!00==	-NN  **>:
 )-In%R	}% "$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/1
5Ij1 $J/7 !--5>z5Jz2((5:5G5G5M5M%j16z2-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 *?*L  !NN00:::FE,1KKt,DIj)))j:9NPS.T1::1F1L1LS1Q1+-BHHJ1	*- RDNN++66x@QQ  {#q(!!"CD )W ++ 		z54 &55 %))$))CLL*AB#(X$ $>>+s2$ 3%Z1 ! 	KK67HHQK)) 	6tyy455' 	KK*	s   )X +DZ9 9EZ9 	X6 Z9 , Z9 B0Z9 ?X; Z9 7FZ9 9Z9 Z9 #Z4:A Z9 X32X36Z9 ;Z1AZ, Z9 ,Z11Z9 99]4]$\**']]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.
        r?   Nz	Error: %srH   )r[   rS   r   rX   rN   rO   rY   rZ   )r!   r5   rn   r+   	raw_valuevalrv   s          r   rQ   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')r?   z (.)z: )	r   rI   r0   rR   r   object_namer/   m2m_target_field_namer4   )r!   r5   r+   s      r   rP   zCommand._get_input_message
  s    U''(6=(722E !! ""((..::%% ++-''223 
 	
 
 	
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)rG   r   N)lenfieldsr    name).0unique_constraintr!   s     r   	<genexpr>z-Command.username_is_unique.<locals>.<genexpr>  sW      
 " !(()Q. H!((+t/B/B/G/GGH
s   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.r@   NrH   )r   r   rb   rc   get_by_natural_keyDoesNotExistr   r    rS   r   rX   rY   rZ   )r!   rh   rj   r=   rv   s        r   rM   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   r6   r:   rw   rQ   rP   r
   r   rM   __classcell__)r$   s   @r   r   r      sM    (D!% O
/b1^@ 
 
 
)r   r   )__doc__rW   r]   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   rJ   r   r   r   r   <module>r      sN     	 
 . ? E " A & 3 &	y 	 Z)k Z)r   