
    (phܪ                        S SK Jr  S SKJr  S SKJr  S SKJrJr  S SK	J
r
  S SKJr  SSKJrJrJrJrJr  S	 r " S
 S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S  S!\5      r " S" S#\5      r  " S$ S%\5      r! " S& S'\!5      r" " S( S)\!5      r# " S* S+\!5      r$ " S, S-\!5      r% " S. S/\!5      r&g0)1    )models)	Operation)
ModelState)field_referencesresolve_relation)normalize_together)cached_property   )AddField
AlterFieldFieldOperationRemoveFieldRenameFieldc                 ~    [        5       nU H-  nX2;   a  [        SU< SU < S35      eUR                  U5        M/     g )NzFound duplicate value z in CreateModel z
 argument.)set
ValueErroradd)arg_nameobjs	used_valsvals       Y/var/www/html/venv/lib/python3.13/site-packages/django/db/migrations/operations/models.py_check_for_duplicatesr      s<    IJMxX  	c     c                   J   ^  \ rS rSrS r\S 5       rS rU 4S jrS r	Sr
U =r$ )ModelOperation   c                     Xl         g Nname)selfr!   s     r   __init__ModelOperation.__init__   s    	r   c                 6    U R                   R                  5       $ r   )r!   lowerr"   s    r   
name_lowerModelOperation.name_lower   s    yy  r   c                 <    UR                  5       U R                  :H  $ r   )r&   r(   r"   r!   	app_labels      r   references_modelModelOperation.references_model   s    zz|t..r   c                 R   > [         TU ]  X5      =(       d    U R                  X5      $ r   )superreducecan_reduce_throughr"   	operationr,   	__class__s      r   r1   ModelOperation.reduce    s)    w~i3 
t7N7N8
 	
r   c                 D    UR                  U R                  U5      (       + $ r   )r-   r!   )r"   r4   r,   s      r   r2   !ModelOperation.can_reduce_through%   s    --diiCCCr   r    )__name__
__module____qualname____firstlineno__r#   r	   r(   r-   r1   r2   __static_attributes____classcell__r5   s   @r   r   r      s2     ! !/

D Dr   r   c                   x   ^  \ rS rSrSr/ SQrSU 4S jjrS rS rS r	S r
S	 r\S
 5       rS rU 4S jrSrU =r$ )CreateModel)   zCreate a model's table.)fieldsoptionsmanagersc                 \  > X l         U=(       d    0 U l        U=(       d    [        R                  4U l        U=(       d    / U l        [        TU ]  U5        [        SS U R                    5       5        [        SS U R                   5       5        [        SS U R
                   5       5        g )NrC   c              3   *   #    U  H	  u  pUv   M     g 7fr    .0r!   _s      r   	<genexpr>'CreateModel.__init__.<locals>.<genexpr>6   s     (I['$[   basesc              3      #    U  HS  n[        US 5      (       a  UR                  R                  O&[        U[        5      (       a  UR                  5       OUv   MU     g7f)_metaN)hasattrrQ   label_lower
isinstancestrr&   )rJ   bases     r   rL   rM   9   sQ       'D tW-- JJ**)3D#)>)>DI 's   AArE   c              3   *   #    U  H	  u  pUv   M     g 7fr   rH   rI   s      r   rL   rM   B   s     *M}GD4}rN   )	rC   rD   r   ModelrO   rE   r0   r#   r   )r"   r!   rC   rD   rO   rE   r5   s         r   r#   CreateModel.__init__.   s    }"-v||o
 B 	h(IT[[(IJ !JJ
	
 	j*Mt}}*MNr   c                    U R                   U R                  S.nU R                  (       a  U R                  US'   U R                  (       a.  U R                  [        R
                  4:w  a  U R                  US'   U R                  (       a5  U R                  S[        R                  " 5       4/:w  a  U R                  US'   U R                  R                  / U4$ )N)r!   rC   rD   rO   objectsrE   )
r!   rC   rD   rO   r   rX   rE   Managerr5   r;   r"   kwargss     r   deconstructCreateModel.deconstructD   s    IIkk
 << $F9::$**7"jjF7O==T]]	6>>;K/L.MM!%F:++R88r   c                     UR                  [        UU R                  [        U R                  5      [        U R                  5      [        U R                  5      [        U R                  5      5      5        g r   )
	add_modelr   r!   listrC   dictrD   tuplerO   rE   r"   r,   states      r   state_forwardsCreateModel.state_forwardsQ   sP    		T[[!T\\"djj!T]]#		
r   c                     UR                   R                  XR                  5      nU R                  UR                  R
                  U5      (       a  UR                  U5        g g r   apps	get_modelr!   allow_migrate_model
connectionaliascreate_modelr"   r,   schema_editor
from_stateto_statemodels         r   database_forwardsCreateModel.database_forwards]   M    ''	99=##M$<$<$B$BEJJ&&u- Kr   c                     UR                   R                  XR                  5      nU R                  UR                  R
                  U5      (       a  UR                  U5        g g r   rl   rm   r!   rn   ro   rp   delete_modelrr   s         r   database_backwardsCreateModel.database_backwardsb   M    )))YY?##M$<$<$B$BEJJ&&u- Kr   c                 p    SU R                   R                  SS5      (       a  SOS< SU R                  < 3$ )NzCreate proxyFzproxy  zmodel )rD   getr!   r'   s    r   describeCreateModel.describeg   s1    ((%88Hb@II
 	
r   c                     U R                   $ r   r(   r'   s    r   migration_name_fragment#CreateModel.migration_name_fragmentm   s    r   c                    UR                  5       nX0R                  :X  a  gX#4nU R                   HZ  nU[        R                  Ld  M  [        U[        R                  R                  [        45      (       d  MI  [        XR5      U:X  d  MZ    g   U R                   H#  u  pg[        X R                  4Xt5      (       d  M#    g   g)NTF)r&   r(   rO   r   rX   rT   rV   	ModelBaserU   r   rC   r   )r"   r!   r,   r(   reference_model_tuplerV   _namefields           r   r-   CreateModel.references_modelq   s    ZZ\
( "+ 7JJDFLL(tfkk&;&;S%ABB$T59NN  !KKLEOO,e  	 (
 r   c                   >^ [        T[        5      (       a=  U R                  TR                  :X  a#  U R                  R	                  SS5      (       d  / $ [        T[
        5      (       aZ  U R                  TR                  :X  a@  [        TR                  U R                  U R                  U R                  U R                  S9/$ [        T[        5      (       a  U R                  TR                  :X  a  0 U R                  ETR                  EnTR                   H'  nUTR                  ;  d  M  UR                  US 5        M)     [        U R                  U R                  UU R                  U R                  S9/$ [        T[         5      (       aZ  U R                  TR                  :X  a@  [        U R                  U R                  U R                  U R                  TR                  S9/$ [        T["        5      (       at  U R                  TR                  :X  aZ  [        U R                  U R                  0 U R                  ETR$                  TR&                  0EU R                  U R                  S9/$ [        T[(        5      (       aj  U R                  TR                  :X  aP  [        U R                  U R                  0 U R                  ESTR*                  0EU R                  U R                  S9/$ [        T[,        5      (       Ga9  U R                  TR.                  :X  Ga  [        T[0        5      (       aZ  [        U R                  U R                  TR                  TR2                  4/-   U R                  U R                  U R                  S9/$ [        T[4        5      (       ar  [        U R                  U R                   VVs/ s H$  u  pVXUTR                  :X  a  TR2                  OU4PM&     snnU R                  U R                  U R                  S9/$ [        T[6        5      (       a  U R                  R9                  5       nS HN  nUR                  US 5      nU(       d  M  [;        [=        [>        U4S jU 5       5      5      nU(       d  MJ  XU'   MP     UR	                  S5      n	U	TR                  :X  a  US	 [        U R                  U R                   VVs/ s H(  u  pVURA                  5       TR                  :w  d  M%  XV4PM*     snnUU R                  U R                  S9/$ [        T[B        5      (       a  U R                  R9                  5       nS HE  nUR	                  U5      nU(       d  M  U V
s1 s H  n
[E        U4S jU
 5       5      iM     sn
X7'   MG     UR	                  S5      n	U	TRF                  :X  a  TR                  US'   [        U R                  U R                   VVs/ s H%  u  pVUTRF                  :X  a  TR                  OUU4PM'     snnUU R                  U R                  S9/$ GOy[        T[H        5      (       Gac  U R                  TR.                  :X  GaH  [        T[J        5      (       an  [        U R                  U R                  0 U R                  ES/ U R                  R	                  S/ 5      QTRL                  P0EU R                  U R                  S9/$ [        T[N        5      (       a  U R                  R	                  S/ 5       Vs/ s H!  nUR                  TR                  :w  d  M  UPM#     nn[        U R                  U R                  0 U R                  ESU0EU R                  U R                  S9/$ [        T[P        5      (       Ga  TRR                  (       a  U R                  R	                  S	/ 5       V
s1 s H  n
U
TRR                  :w  d  M  U
iM     nn
U(       a  XR                  S	'   OU R                  R                  S	S 5        [        U R                  U R                  0 U R                  ES/ U R                  R	                  S/ 5      Q[T        RV                  " TRR                  TR                  S
9P0EU R                  U R                  S9/$ [X        TU ]  TU5      $ s  snnf s  snnf s  sn
f s  snnf s  snf s  sn
f )Nr   F)rC   rD   rO   rE   order_with_respect_to)unique_togetherindex_togetherc              3   N   >#    U  H  n[        U4S  jU 5       5      v   M     g7f)c              3   J   >#    U  H  oTR                   :w  d  M  Uv   M     g 7fr   r   rJ   fr4   s     r   rL   /CreateModel.reduce.<locals>.<genexpr>.<genexpr>   s!      *&39a)BVBV=V6s   #	#N)re   )rJ   rC   r4   s     r   rL   %CreateModel.reduce.<locals>.<genexpr>   s3      !" 39 %* *&39*& %& %& 39s   "%c              3   `   >#    U  H#  nUTR                   :X  a  TR                  OUv   M%     g 7fr   old_namenew_namer   s     r   rL   r     s1      ")/A 789;M;M6M	 2 2ST T)/s   +.indexesr   rC   r!   ).rT   DeleteModelr(   rD   r   RenameModelold_name_lowerrA   r   rC   rO   rE   AlterModelOptionsALTER_OPTION_KEYSpopr!   AlterModelManagersAlterTogetherOptionOperationoption_nameoption_valueAlterOrderWithRespectTor   r   model_name_lowerr   r   r   r   copyr   filterboolr&   r   re   r   IndexOperationAddIndexindexRemoveIndexRenameIndex
old_fieldsr   Indexr0   r1   )r"   r4   r,   rD   keynvr   optionr   rC   r   options_indexesoptions_index_togetherr5   s    `            r   r1   CreateModel.reduce   s   y+..9#7#77LL$$We44Iy+..9#;#;; &&;; LL**!]]  y"3449#7#77;;):):;G 22i///KKT* 3 II;;#**!]]  y"4559#7#77 II;; LL**&//  y">??9#7#77 II;;,,$00)2H2HI **!]]	  y"9::9#7#77 II;;,,/1P1P **!]]	  y.119#=#==)X..		#{{y~~y.O-PP $"jj!%  Iz22		 )- (3 	3F	AN(3  !%"jj!%	  I{33,,++-#HK$[[d;Fv!$" $!" 39	!"
" "639K0 $I  )04K(L%(I,@,@@ 78		 )- (3 wwyI,@,@@ #QF(3 
 !("jj!%
  I{33,,++-#HK$[[5Fv +10
 +1	 " ")/"  +10, $I )04K(L%(I,>,>>7@7I7IG34		 )- (3 45	8J8J3JY//PQSTU(3  !("jj!%	  48 y.119#=#==)X..		#{{!"ll!% (!%!1!1)R!@( )(! #jj!%  I{33 "&!1!1)R!@#!@zzY^^3 !@   #  		#{{!"ll!%! #jj!%	  I{33	8L8L #',,"2"23CR"H*"H!5!55 "H ' *
 *5KLL!12LL$$%5t<		#{{!"ll!% (!%!1!1)R!@( &+4+?+?iFXFX!"(! #jj!% " w~i33O B 0 <#$*s6   +c	$cc=c4,c'c 	c c%4c%)rO   rC   rE   rD   )NNN)r9   r:   r;   r<   __doc__serialization_expand_argsr#   r_   rh   rw   r}   r   propertyr   r-   r1   r=   r>   r?   s   @r   rA   rA   )   sP    ! AO,9

.
.

  .k4 k4r   rA   c                   L    \ rS rSrSrS rS rS rS rS r	S r
\S	 5       rS
rg)r   iv  zDrop a model's table.c                 P    SU R                   0nU R                  R                  / U4$ Nr!   )r!   r5   r;   r]   s     r   r_   DeleteModel.deconstructy  s+    DII
 ++R88r   c                 :    UR                  XR                  5        g r   )remove_modelr(   rf   s      r   rh   DeleteModel.state_forwards  s    9oo6r   c                     UR                   R                  XR                  5      nU R                  UR                  R
                  U5      (       a  UR                  U5        g g r   r{   rr   s         r   rw   DeleteModel.database_forwards  r   r   c                     UR                   R                  XR                  5      nU R                  UR                  R
                  U5      (       a  UR                  U5        g g r   rk   rr   s         r   r}   DeleteModel.database_backwards  ry   r   c                     g)NTrH   r+   s      r   r-   DeleteModel.references_model  s     r   c                      SU R                   -  $ )NzDelete model %sr    r'   s    r   r   DeleteModel.describe  s     499,,r   c                      SU R                   -  $ )Nz	delete_%sr   r'   s    r   r   #DeleteModel.migration_name_fragment  s    T__,,r   rH   N)r9   r:   r;   r<   r   r_   rh   rw   r}   r-   r   r   r   r=   rH   r   r   r   r   v  s7    97.
.

- - -r   r   c                      ^  \ rS rSrSrU 4S jr\S 5       r\S 5       rS r	S r
S rS	 rS
 rS r\S 5       rU 4S jrSrU =r$ )r   i  zRename a model.c                 <   > Xl         X l        [        TU ]  U5        g r   )r   r   r0   r#   )r"   r   r   r5   s      r   r#   RenameModel.__init__  s      "r   c                 6    U R                   R                  5       $ r   r   r&   r'   s    r   r   RenameModel.old_name_lower      }}""$$r   c                 6    U R                   R                  5       $ r   r   r&   r'   s    r   new_name_lowerRenameModel.new_name_lower  r   r   c                 f    U R                   U R                  S.nU R                  R                  / U4$ )Nr   )r   r   r5   r;   r]   s     r   r_   RenameModel.deconstruct  s0    
 ++R88r   c                 P    UR                  XR                  U R                  5        g r   )rename_modelr   r   rf   s      r   rh   RenameModel.state_forwards  s    9mmT]]Cr   c                 x   UR                   R                  XR                  5      nU R                  UR                  R
                  U5      (       Ga  UR                   R                  XR                  5      nUR                  UUR                  R                  UR                  R                  5        UR                  R                   H  nUR                  U:X  a  UnXR                  4n	OLUR                  nUR                  R                  R                  UR                  R                  R                  4n	UR                   R                  " U	6 R                  R                  UR                   R"                  5      n
UR%                  UUR                   U
5        M     ['        UR                  R(                  UR                  R(                  5      nU Hb  u  pUR*                  UR                  :X  d/  UR,                  R.                  R                  R0                  (       d  MP  UR3                  UUUSS9  Md     g g )NF)strict)rl   rm   r   rn   ro   rp   r   alter_db_tablerQ   db_tablerelated_objectsrelated_modelr   r,   
model_name	get_fieldr   r!   alter_fieldziplocal_many_to_manyrv   remote_fieldthroughauto_created_alter_many_to_many)r"   r,   rs   rt   ru   	new_model	old_modelrelated_objectrv   related_keyto_fieldrC   	old_field	new_fields                 r   rw   RenameModel.database_forwards  s   MM++I}}E	##M$<$<$B$BINN"11)]]KI(((((( #,//"A"A!//9<%E#,.A.A"BK*88E&44::DD&44::EE#K $==22K@FFPP"((-- ))"(( #B& 22IOO4V4VF )/$	 OOy'>'>>$1199??LL11 	 2  )/? Or   c                 @   U R                   U R                  sU l        U l         U R                  U R                  sU l        U l        U R	                  XX45        U R                   U R                  sU l        U l         U R                  U R                  sU l        U l        g r   )r   r   r   r   rw   r"   r,   rs   rt   ru   s        r   r}   RenameModel.database_backwards  s     	1T0 (,}}dmm$t}yN  	1T0 (,}}dmm$t}r   c                     UR                  5       U R                  :H  =(       d    UR                  5       U R                  :H  $ r   )r&   r   r   r+   s      r   r-   RenameModel.references_model  s1    JJLD///V4::<4CVCV3V	
r   c                 >    SU R                   < SU R                  < 3$ )NzRename model  to r   r'   s    r   r   RenameModel.describe  s    *.--GGr   c                 >    SU R                   < SU R                  < 3$ Nrename_rK   )r   r   r'   s    r   r   #RenameModel.migration_name_fragment  s    !%!4!4d6I6IJJr   c                   > [        U[        5      (       a;  U R                  UR                  :X  a!  [        U R                  UR
                  5      /$ [        [        U ]#  X5      =(       d!    UR                  U R
                  U5      (       + $ r   )
rT   r   r   r   r   r   r0   r   r1   r-   r3   s      r   r1   RenameModel.reduce  s    y+..##y'?'?? MM&&  ^T1
 F++DMM9EE	Fr   )r   r   r   r   )r9   r:   r;   r<   r   r#   r	   r   r   r_   rh   rw   r}   r-   r   r   r   r1   r=   r>   r?   s   @r   r   r     sw    #
 % % % %9D.`D

H K KF Fr   r   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )ModelOptionOperationi  c                    > [        XR                  [        45      (       a  U R                  UR                  :X  a  U/$ [        TU ]  X5      $ r   )rT   r5   r   r(   r0   r1   r3   s      r   r1   ModelOptionOperation.reduce  s@    y>>;"?@@9#7#77;w~i33r   rH   )r9   r:   r;   r<   r1   r=   r>   r?   s   @r   r  r    s    4 4r   r  c                   Z   ^  \ rS rSrSrU 4S jrS rS rS rS r	S r
\S	 5       rS
rU =r$ )AlterModelTablei  zRename a model's table.c                 0   > X l         [        TU ]	  U5        g r   )tabler0   r#   )r"   r!   r  r5   s      r   r#   AlterModelTable.__init__  s    
r   c                 f    U R                   U R                  S.nU R                  R                  / U4$ )Nr!   r  )r!   r  r5   r;   r]   s     r   r_   AlterModelTable.deconstruct!  s0    IIZZ
 ++R88r   c                 T    UR                  XR                  SU R                  05        g )Nr   )alter_model_optionsr(   r  rf   s      r   rh   AlterModelTable.state_forwards(  s    !!)__z4::>VWr   c                 2   UR                   R                  XR                  5      nU R                  UR                  R
                  U5      (       GaF  UR                   R                  XR                  5      nUR                  UUR                  R                  UR                  R                  5        [        UR                  R                  UR                  R                  5       H  u  pxUR                  R                  R                  R                  (       d  M6  UR                  UR                  R                  UR                  R                  R                  R                  UR                  R                  R                  R                  5        M     g g r   )rl   rm   r!   rn   ro   rp   r   rQ   r   r   r   r   r   r   )	r"   r,   rs   rt   ru   r   r   r   r   s	            r   rw   !AlterModelTable.database_forwards+  s"   MM++IyyA	##M$<$<$B$BINN"11)YYGI(((((( ),22IOO4V4V)$	 ))1177DDD!00!..66!..66<<EE!..66<<EE	) Or   c                 &    U R                  XX45      $ r   rw   r   s        r   r}   "AlterModelTable.database_backwards?      %%i
UUr   c                 b    SU R                   < SU R                  b  U R                  < 3$ S< 3$ )NzRename table for r   z	(default)r  r'   s    r   r   AlterModelTable.describeB  s6    II**0DJJA
 	
6AA
 	
r   c                      SU R                   -  $ )Nzalter_%s_tabler   r'   s    r   r   'AlterModelTable.migration_name_fragmentH  s    $//11r   )r  )r9   r:   r;   r<   r   r#   r_   rh   rw   r}   r   r   r   r=   r>   r?   s   @r   r  r    s:    !9X(V
 2 2r   r  c                   V   ^  \ rS rSrU 4S jrS rS rS rS rS r	\
S 5       rS	rU =r$ )
AlterModelTableCommentiM  c                 0   > X l         [        TU ]	  U5        g r   )table_commentr0   r#   )r"   r!   r"  r5   s      r   r#   AlterModelTableComment.__init__N  s    *r   c                 f    U R                   U R                  S.nU R                  R                  / U4$ )N)r!   r"  )r!   r"  r5   r;   r]   s     r   r_   "AlterModelTableComment.deconstructR  s2    II!//
 ++R88r   c                 T    UR                  XR                  SU R                  05        g )Ndb_table_comment)r  r(   r"  rf   s      r   rh   %AlterModelTableComment.state_forwardsY  s%    !!);T=O=O(P	
r   c                 f   UR                   R                  XR                  5      nU R                  UR                  R
                  U5      (       aa  UR                   R                  XR                  5      nUR                  UUR                  R                  UR                  R                  5        g g r   )	rl   rm   r!   rn   ro   rp   alter_db_table_commentrQ   r'  )r"   r,   rs   rt   ru   r   r   s          r   rw   (AlterModelTableComment.database_forwards^  s    MM++IyyA	##M$<$<$B$BINN"11)YYGI000000 Or   c                 &    U R                  XX45      $ r   r  r   s        r   r}   )AlterModelTableComment.database_backwardsh  r  r   c                 "    SU R                    S3$ )NAlter z table commentr    r'   s    r   r   AlterModelTableComment.describek  s    		{.11r   c                 "    SU R                    S3$ )Nalter__table_commentr   r'   s    r   r   .AlterModelTableComment.migration_name_fragmentn  s    (77r   )r"  )r9   r:   r;   r<   r#   r_   rh   rw   r}   r   r   r   r=   r>   r?   s   @r   r   r   M  s6    9

V2 8 8r   r   c                   |   ^  \ rS rSrSrU 4S jr\S 5       rS rS r	S r
S rS	 rS
 r\S 5       rU 4S jrSrU =r$ )r   is  Nc                    > U(       a  [        [        U5      5      n[        X R                  U5        [        TU ]  U5        g r   )r   r   setattrr   r0   r#   )r"   r!   r   r5   s      r   r#   %AlterTogetherOptionOperation.__init__v  s3    1,?@L&&5r   c                 ,    [        X R                  5      $ r   )getattrr   r'   s    r   r   )AlterTogetherOptionOperation.option_value|  s    t--..r   c                 |    SU R                   U R                  U R                  0nU R                  R                  / U4$ r   )r!   r   r   r5   r;   r]   s     r   r_   (AlterTogetherOptionOperation.deconstruct  s<    DIId//
 ++R88r   c                 j    UR                  UU R                  U R                  U R                  05        g r   )r  r(   r   r   rf   s      r   rh   +AlterTogetherOptionOperation.state_forwards  s.    !!OOt001	
r   c           
         UR                   R                  XR                  5      nU R                  UR                  R
                  U5      (       a  UR                   R                  XR                  5      n[        USU R                  -  5      nU" U[        UR                  U R                  [        5       5      [        UR                  U R                  [        5       5      5        g g )Nzalter_%s)
rl   rm   r!   rn   ro   rp   r:  r   rQ   r   )r"   r,   rs   rt   ru   r   r   alter_togethers           r   rw   .AlterTogetherOptionOperation.database_forwards  s    MM++IyyA	##M$<$<$B$BINN"11)YYGI$]JAQAQ4QRN	)9)935A	)9)935A Or   c                 &    U R                  XX45      $ r   r  r   s        r   r}   /AlterTogetherOptionOperation.database_backwards  r  r   c                    ^ U R                  X5      =(       a7    U R                  (       + =(       d    [        U4S jU R                   5       5      $ )Nc              3   .   >#    U  H
  nTU;   v   M     g 7fr   rH   )rJ   rC   r!   s     r   rL   @AlterTogetherOptionOperation.references_field.<locals>.<genexpr>  s     D2CDFN2Cs   )r-   r   anyr"   r   r!   r,   s     ` r   references_field-AlterTogetherOptionOperation.references_field  sA    $$Z; 
!!! ED$2C2CDD	
r   c           	          SU R                   < SU R                  < S[        U R                  =(       d    S5      < S3$ )Nr/  z for z (r   z constraint(s)))r   r!   lenr   r'   s    r   r   %AlterTogetherOptionOperation.describe  s/    II!!'R(
 	
r   c                 >    SU R                   < SU R                  < 3$ )Nr2  rK   )r(   r   r'   s    r   r   4AlterTogetherOptionOperation.migration_name_fragment  s     $1A1ABBr   c                    > [         TU ]  X5      =(       d-    [        U[        5      =(       a    [	        U5      [	        U 5      L$ r   )r0   r2   rT   r   typer3   s      r   r2   /AlterTogetherOptionOperation.can_reduce_through  s:    w))? 
y">? 2YtDz1	
r   rH   )r9   r:   r;   r<   r   r#   r	   r   r_   rh   rw   r}   rJ  r   r   r   r2   r=   r>   r?   s   @r   r   r   s  s`    K / /9
	V

 C C
 
r   r   c                   0   ^  \ rS rSrSrSrU 4S jrSrU =r$ )AlterUniqueTogetheri  zp
Change the value of unique_together to the target one.
Input value of unique_together must be a set of tuples.
r   c                 $   > [         TU ]  X5        g r   r0   r#   )r"   r!   r   r5   s      r   r#   AlterUniqueTogether.__init__  s    /r   rH   	r9   r:   r;   r<   r   r   r#   r=   r>   r?   s   @r   rU  rU    s    
 $K0 0r   rU  c                   0   ^  \ rS rSrSrSrU 4S jrSrU =r$ )AlterIndexTogetheri  zn
Change the value of index_together to the target one.
Input value of index_together must be a set of tuples.
r   c                 $   > [         TU ]  X5        g r   rW  )r"   r!   r   r5   s      r   r#   AlterIndexTogether.__init__  s    .r   rH   rY  r?   s   @r   r[  r[    s    
 #K/ /r   r[  c                   d   ^  \ rS rSrSrSrU 4S jrS rS rS r	S r
S	 rS
 r\S 5       rSrU =r$ )r   i  z9Represent a change with the order_with_respect_to option.r   c                 0   > X l         [        TU ]	  U5        g r   )r   r0   r#   )r"   r!   r   r5   s      r   r#    AlterOrderWithRespectTo.__init__  s    %:"r   c                 f    U R                   U R                  S.nU R                  R                  / U4$ )Nr!   r   )r!   r   r5   r;   r]   s     r   r_   #AlterOrderWithRespectTo.deconstruct  s2    II%)%?%?
 ++R88r   c                 j    UR                  UU R                  U R                  U R                  05        g r   )r  r(   r   r   rf   s      r   rh   &AlterOrderWithRespectTo.state_forwards  s.    !!OOt99:	
r   c                    UR                   R                  XR                  5      nU R                  UR                  R
                  U5      (       Ga  UR                   R                  XR                  5      nUR                  R                  (       aF  UR                  R                  (       d+  UR                  XfR                  R                  S5      5        g UR                  R                  (       af  UR                  R                  (       dJ  UR                  R                  S5      nUR                  5       (       d  SUl        UR                  UU5        g g g g )N_orderr   )rl   rm   r!   rn   ro   rp   rQ   r   remove_fieldr   has_defaultdefault	add_field)r"   r,   rs   rt   ru   to_model
from_modelr   s           r   rw   )AlterOrderWithRespectTo.database_forwards  s    ==**9ii@##M$<$<$B$BHMM#229iiHJ   66 <<** 0 0 : :8 D 44"((>> 00:((**$%EM'' ? 5 Nr   c                 (    U R                  XX45        g r   r  r   s        r   r}   *AlterOrderWithRespectTo.database_backwards  s    yNr   c                 x    U R                  X5      =(       a#    U R                  S L =(       d    X R                  :H  $ r   )r-   r   rI  s       r   rJ  (AlterOrderWithRespectTo.references_field   s6    $$Z; 
&&$.T$:T:T2T	
r   c                 >    SU R                   < SU R                  < 3$ )NzSet order_with_respect_to on r   rb  r'   s    r   r    AlterOrderWithRespectTo.describe  s    II&&
 	
r   c                      SU R                   -  $ )Nzalter_%s_order_with_respect_tor   r'   s    r   r   /AlterOrderWithRespectTo.migration_name_fragment  s    /$//AAr   )r   )r9   r:   r;   r<   r   r   r#   r_   rh   rw   r}   rJ  r   r   r   r=   r>   r?   s   @r   r   r     sE    C)K9
4O


 B Br   r   c                   b   ^  \ rS rSrSr/ SQrU 4S jrS rS rS r	S r
S	 r\S
 5       rSrU =r$ )r   i  z
Set new model options that don't directly affect the database schema
(like verbose_name, permissions, ordering). Python code in migrations
may still need them.
)base_manager_namedefault_manager_namedefault_related_nameget_latest_bymanagedorderingpermissionsdefault_permissionsselect_on_saveverbose_nameverbose_name_pluralc                 0   > X l         [        TU ]	  U5        g r   )rD   r0   r#   )r"   r!   rD   r5   s      r   r#   AlterModelOptions.__init__&  s    r   c                 f    U R                   U R                  S.nU R                  R                  / U4$ )N)r!   rD   )r!   rD   r5   r;   r]   s     r   r_   AlterModelOptions.deconstruct*  s0    II||
 ++R88r   c                 h    UR                  UU R                  U R                  U R                  5        g r   )r  r(   rD   r   rf   s      r   rh    AlterModelOptions.state_forwards1  s*    !!OOLL""		
r   c                     g r   rH   r   s        r   rw   #AlterModelOptions.database_forwards9      r   c                     g r   rH   r   s        r   r}   $AlterModelOptions.database_backwards<  r  r   c                      SU R                   -  $ )NzChange Meta options on %sr    r'   s    r   r   AlterModelOptions.describe?  s    *TYY66r   c                      SU R                   -  $ )Nzalter_%s_optionsr   r'   s    r   r   )AlterModelOptions.migration_name_fragmentB  s    !DOO33r   )rD   )r9   r:   r;   r<   r   r   r#   r_   rh   rw   r}   r   r   r   r=   r>   r?   s   @r   r   r     sB    9
7 4 4r   r   c                   `   ^  \ rS rSrSrS/rU 4S jrS rS rS r	S r
S	 r\S
 5       rSrU =r$ )r   iG  zAlter the model's managers.rE   c                 0   > X l         [        TU ]	  U5        g r   )rE   r0   r#   )r"   r!   rE   r5   s      r   r#   AlterModelManagers.__init__L  s     r   c                 `    U R                   R                  U R                  U R                  /0 4$ r   )r5   r;   r!   rE   r'   s    r   r_   AlterModelManagers.deconstructP  s&    ++dii-GLLr   c                 P    UR                  XR                  U R                  5        g r   )alter_model_managersr(   rE   rf   s      r   rh   !AlterModelManagers.state_forwardsS  s    ""9oot}}Mr   c                     g r   rH   r   s        r   rw   $AlterModelManagers.database_forwardsV  r  r   c                     g r   rH   r   s        r   r}   %AlterModelManagers.database_backwardsY  r  r   c                      SU R                   -  $ )NzChange managers on %sr    r'   s    r   r   AlterModelManagers.describe\  s    &22r   c                      SU R                   -  $ )Nzalter_%s_managersr   r'   s    r   r   *AlterModelManagers.migration_name_fragment_  s    "T__44r   )rE   )r9   r:   r;   r<   r   r   r#   r_   rh   rw   r}   r   r   r   r=   r>   r?   s   @r   r   r   G  sB    %!+MN3 5 5r   r   c                   (    \ rS rSrSr\S 5       rSrg)r   id  r   c                 6    U R                   R                  5       $ r   )r   r&   r'   s    r   r   IndexOperation.model_name_lowerg  s    $$&&r   rH   N)r9   r:   r;   r<   r   r	   r   r=   rH   r   r   r   r   d  s    K' 'r   r   c                   `   ^  \ rS rSrSrS rS rS rS rS r	S r
\S	 5       rU 4S
 jrSrU =r$ )r   il  zAdd an index on a model.c                 Z    Xl         UR                  (       d  [        SU-  5      eX l        g )NzSIndexes passed to AddIndex operations require a name argument. %r doesn't have one.)r   r!   r   r   )r"   r   r   s      r   r#   AddIndex.__init__o  s/    $zz1389  
r   c                 P    UR                  XR                  U R                  5        g r   )	add_indexr   r   rf   s      r   rh   AddIndex.state_forwardsx  s    	#8#8$**Er   c                     UR                   R                  XR                  5      nU R                  UR                  R
                  U5      (       a  UR                  XPR                  5        g g r   )rl   rm   r   rn   ro   rp   r  r   rr   s         r   rw   AddIndex.database_forwards{  sQ    ''	??C##M$<$<$B$BEJJ##E::6 Kr   c                     UR                   R                  XR                  5      nU R                  UR                  R
                  U5      (       a  UR                  XPR                  5        g g r   )rl   rm   r   rn   ro   rp   remove_indexr   rr   s         r   r}   AddIndex.database_backwards  sQ    )))__E##M$<$<$B$BEJJ&&ujj9 Kr   c                 f    U R                   U R                  S.nU R                  R                  / U4$ N)r   r   )r   r   r5   r;   r]   s     r   r_   AddIndex.deconstruct  s6    //ZZ

 NN''
 	
r   c                    U R                   R                  (       ai  SU R                   R                  < SSR                  U R                   R                   Vs/ s H  n[	        U5      PM     sn5      < SU R
                  < 3$ SU R                   R                  < SSR                  U R                   R                  5      < SU R
                  < 3$ s  snf )NzCreate index  on , 
 on model z on field(s) z
 of model )r   expressionsr!   joinrU   r   rC   )r"   
expressions     r   r   AddIndex.describe  s    ::!!!

		TZZ=S=ST=Sz3z?=STU  " JJOOIIdjj''(OO
 	
 Us   Cc                 l    U R                   < SU R                  R                  R                  5       < 3$ NrK   )r   r   r!   r&   r'   s    r   r    AddIndex.migration_name_fragment  s$    //1F1F1HIIr   c                 ~  > [        U[        5      (       a&  U R                  R                  UR                  :X  a  / $ [        U[        5      (       a^  U R                  R                  UR
                  :X  a:  UR                  U R                  l        [        U R                  U R                  S9/$ [        TU ])  X5      $ r  )rT   r   r   r!   r   r   r   r   r   r0   r1   r3   s      r   r1   AddIndex.reduce  s    i--$**//Y^^2SIi--$**//YEWEW2W'00DJJOtzzJKKw~i33r   )r   r   )r9   r:   r;   r<   r   r#   rh   rw   r}   r_   r   r   r   r1   r=   r>   r?   s   @r   r   r   l  sE    "F7
:
	

 J J4 4r   r   c                   L    \ rS rSrSrS rS rS rS rS r	S r
\S	 5       rS
rg)r   i  zRemove an index from a model.c                     Xl         X l        g r   r   r!   r"   r   r!   s      r   r#   RemoveIndex.__init__      $	r   c                 P    UR                  XR                  U R                  5        g r   )r  r   r!   rf   s      r   rh   RemoveIndex.state_forwards  s    9&;&;TYYGr   c                 2   UR                   R                  XR                  5      nU R                  UR                  R
                  U5      (       aG  UR                  XR                  4   nUR                  U R                  5      nUR                  XW5        g g r   )rl   rm   r   rn   ro   rp   r   r   get_index_by_namer!   r  )r"   r,   rs   rt   ru   rv   from_model_stater   s           r   rw   RemoveIndex.database_forwards  s{    )))__E##M$<$<$B$BEJJ)00<Q<Q1QR$66tyyAE&&u4 Kr   c                 2   UR                   R                  XR                  5      nU R                  UR                  R
                  U5      (       aG  UR                  XR                  4   nUR                  U R                  5      nUR                  XW5        g g r   )rl   rm   r   rn   ro   rp   r   r   r  r!   r  )r"   r,   rs   rt   ru   rv   to_model_stater   s           r   r}   RemoveIndex.database_backwards  sx    ''	??C##M$<$<$B$BEJJ%__Y8M8M-MNN"44TYY?E##E1 Kr   c                 f    U R                   U R                  S.nU R                  R                  / U4$ Nr  )r   r!   r5   r;   r]   s     r   r_   RemoveIndex.deconstruct  s6    //II

 NN''
 	
r   c                 >    SU R                   < SU R                  < 3$ )NzRemove index z from r!   r   r'   s    r   r   RemoveIndex.describe  s    ,0IItGGr   c                 Z    SU R                   < SU R                  R                  5       < 3$ Nremove_rK   r   r!   r&   r'   s    r   r   #RemoveIndex.migration_name_fragment      !%!6!6		8IJJr   r  N)r9   r:   r;   r<   r   r#   rh   rw   r}   r_   r   r   r   r=   rH   r   r   r   r     s;    'H52	
H K Kr   r   c                      ^  \ rS rSrSrSS jr\S 5       r\S 5       rS r	S r
S rS	 rS
 r\S 5       rU 4S jrSrU =r$ )r   i  zRename an index.c                     U(       d  U(       d  [        S5      eU(       a  U(       a  [        S5      eXl        X l        X0l        X@l        g )NzHRenameIndex requires one of old_name and old_fields arguments to be set.z;RenameIndex.old_name and old_fields are mutually exclusive.)r   r   r   r   r   )r"   r   r   r   r   s        r   r#   RenameIndex.__init__  sF    
  
M  %  $r   c                 6    U R                   R                  5       $ r   r   r'   s    r   r   RenameIndex.old_name_lower  r   r   c                 6    U R                   R                  5       $ r   r   r'   s    r   r   RenameIndex.new_name_lower  r   r   c                     U R                   U R                  S.nU R                  (       a  U R                  US'   U R                  (       a  U R                  US'   U R                  R
                  / U4$ )N)r   r   r   r   )r   r   r   r   r5   r;   r]   s     r   r_   RenameIndex.deconstruct  sZ    //
 ==!%F:??#'??F< ++R88r   c           	      ~   U R                   (       a{  UR                  UU R                  [        R                  " U R                   U R
                  S95        UR                  UU R                  [        R                  U R                   5        g UR                  XR                  U R                  U R
                  5        g )Nr   )r   r  r   r   r   r   remove_model_optionsr[  r   rename_indexr   rf   s      r   rh   RenameIndex.state_forwards  s    ??OO%%DOO$--H
 &&%%"..	 00$--r   c           
         UR                   R                  XR                  5      nU R                  UR                  R
                  U5      (       d  g U R                  (       a  UR                   R                  XR                  5      nU R                   Vs/ s H'  ovR                  R                  U5      R                  PM)     nnUR                  XhSS9n	[        U	5      S:w  aD  [        S[        U	5      < SUR                  R                  < SSR                  U5      < S35      e[        R                   " U R                  U	S	   S
9n
O5UR                  XR"                  4   nUR%                  U R&                  5      n
U
R(                  U R*                  :X  a  g UR                  XR"                  4   nUR%                  U R*                  5      nUR-                  XZU5        g s  snf )NT)column_namesr   r
   zFound wrong number (z) of indexes for (r  z).r   r   )rl   rm   r   rn   ro   rp   r   rQ   r   column_constraint_namesrM  r   r   r  r   r   r   r  r   r!   r   r  )r"   r,   rs   rt   ru   rv   rm  r   columnsmatching_index_name	old_indexr  r  	new_indexs                 r   rw   RenameIndex.database_forwards  s   ''	??C''(@(@(F(FNN??#229ooNJFJooFUU  **5188o   #0"A"A #B # &'1,  /0"((11		'*	  (+I
  *00<Q<Q1QR(::4==II>>T]]*!4I4I)IJ"44T]]C	""5Y?9s   .G$c                 d   U R                   (       a  g U R                  U R                  sU l        U l        U R                  U R                  sU l        U l        U R                  XX45        U R                  U R                  sU l        U l        U R                  U R                  sU l        U l        g r   )r   r   r   r   r   rw   r   s        r   r}   RenameIndex.database_backwards1  s    ??  	1T0 (,}}dmm$t}yN  	1T0 (,}}dmm$t}r   c                     U R                   (       a)  SU R                    SU R                   SU R                   3$ SU R                   SU R                   SU R                   3$ )NzRename index r  r   zRename unnamed index for )r   r   r   r   r'   s    r   r   RenameIndex.describeD  s_    ==d4??2C4W ('8T__<MT}}o	
r   c                     U R                   (       a  SU R                  < SU R                  < 3$ SU R                  < SSR	                  U R
                  5      < SU R                  < 3$ r  )r   r   r   r   r  r   r'   s    r   r   #RenameIndex.migration_name_fragmentN  sU    ===%)%8%8$:M:MNN  !!HHT__%
 	
r   c                 @  > [        U[        5      (       az  U R                  UR                  :X  a`  UR                  (       aO  U R                  UR
                  :X  a5  [        U R                  UR                  U R                  U R                  S9/$ [        TU ])  X5      $ )N)r   r   r   )rT   r   r   r   r   r   r   r   r   r0   r1   r3   s      r   r1   RenameIndex.reduceX  s    y+..%%)C)CC""##y'?'?? OO&//!]]#	  w~i33r   )r   r   r   r   r   r   )NN)r9   r:   r;   r<   r   r#   r	   r   r   r_   rh   rw   r}   r   r   r   r1   r=   r>   r?   s   @r   r   r     sm    % % % % %	9$#@JD&
 
 
4 4r   r   c                   `   ^  \ rS rSrSrS rS rS rS rS r	S r
\S	 5       rU 4S
 jrSrU =r$ )AddConstraintij  constraintsc                     Xl         X l        g r   r   
constraint)r"   r   r  s      r   r#   AddConstraint.__init__m  s    $$r   c                 P    UR                  XR                  U R                  5        g r   )add_constraintr   r  rf   s      r   rh   AddConstraint.state_forwardsq  s    Y(=(=tOr   c                     UR                   R                  XR                  5      nU R                  UR                  R
                  U5      (       a  UR                  XPR                  5        g g r   )rl   rm   r   rn   ro   rp   r  r  rr   s         r   rw   AddConstraint.database_forwardst  sQ    ''	??C##M$<$<$B$BEJJ((@ Kr   c                     UR                   R                  XR                  5      nU R                  UR                  R
                  U5      (       a  UR                  XPR                  5        g g r   )rl   rm   r   rn   ro   rp   remove_constraintr  rr   s         r   r}    AddConstraint.database_backwardsy  sQ    ''	??C##M$<$<$B$BEJJ++E??C Kr   c                 b    U R                   R                  / U R                  U R                  S.4$ )Nr  )r5   r9   r   r  r'   s    r   r_   AddConstraint.deconstruct~  s/    NN##"oo"oo
 	
r   c                 R    SU R                   R                  < SU R                  < 3$ )NzCreate constraint r  )r  r!   r   r'   s    r   r   AddConstraint.describe  s     OO  OO
 	
r   c                 l    U R                   < SU R                  R                  R                  5       < 3$ r  )r   r  r!   r&   r'   s    r   r   %AddConstraint.migration_name_fragment  s&    //1E1E1K1K1MNNr   c                    > [        U[        5      (       a@  U R                  UR                  :X  a&  U R                  R                  UR                  :X  a  / $ [
        TU ]  X5      $ r   )rT   RemoveConstraintr   r  r!   r0   r1   r3   s      r   r1   AddConstraint.reduce  sO    y"233%%)C)CC$$	6Iw~i33r   )r  r   )r9   r:   r;   r<   r   r#   rh   rw   r}   r_   r   r   r   r1   r=   r>   r?   s   @r   r  r  j  sI    K%PA
D


 O O4 4r   r  c                   L    \ rS rSrSrS rS rS rS rS r	S r
\S	 5       rS
rg)r  i  r  c                     Xl         X l        g r   r  r  s      r   r#   RemoveConstraint.__init__  r  r   c                 P    UR                  XR                  U R                  5        g r   )r  r   r!   rf   s      r   rh   RemoveConstraint.state_forwards  s    	+@+@$))Lr   c                 2   UR                   R                  XR                  5      nU R                  UR                  R
                  U5      (       aG  UR                  XR                  4   nUR                  U R                  5      nUR                  XW5        g g r   )rl   rm   r   rn   ro   rp   r   r   get_constraint_by_namer!   r  )r"   r,   rs   rt   ru   rv   r  r  s           r   rw   "RemoveConstraint.database_forwards  s{    ''	??C##M$<$<$B$BEJJ)00<Q<Q1QR)@@KJ++E> Kr   c                 2   UR                   R                  XR                  5      nU R                  UR                  R
                  U5      (       aG  UR                  XR                  4   nUR                  U R                  5      nUR                  XW5        g g r   )rl   rm   r   rn   ro   rp   r   r   r  r!   r  )r"   r,   rs   rt   ru   rv   r  r  s           r   r}   #RemoveConstraint.database_backwards  sx    ''	??C##M$<$<$B$BEJJ%__Y8M8M-MNN'>>tyyIJ((; Kr   c                 b    U R                   R                  / U R                  U R                  S.4$ r  )r5   r9   r   r!   r'   s    r   r_   RemoveConstraint.deconstruct  s/    NN##"oo		
 	
r   c                 >    SU R                   < SU R                  < 3$ )NzRemove constraint z from model r  r'   s    r   r   RemoveConstraint.describe  s    7;yy$//RRr   c                 Z    SU R                   < SU R                  R                  5       < 3$ r  r  r'   s    r   r   (RemoveConstraint.migration_name_fragment  r  r   r  N)r9   r:   r;   r<   r   r#   rh   rw   r}   r_   r   r   r   r=   rH   r   r   r  r    s=    KM?<
S K Kr   r  N)'	django.dbr   $django.db.migrations.operations.baser   django.db.migrations.stater   django.db.migrations.utilsr   r   django.db.models.optionsr   django.utils.functionalr	   rC   r   r   r   r   r   r   r   rA   r   r   r  r  r   r   rU  r[  r   r   r   r   r   r   r   r  r  rH   r   r   <module>r(     s,    : 1 I 7 3 R RDY D(J4. J4Z
 -.  -FtF. tFn4> 402* 02f#81 #8L>
#7 >
B	06 	0	/5 	/AB2 ABH44, 44n5- 5:'Y ';4~ ;4|(K. (KVR4. R4j/4N /4d'K~ 'Kr   