
    h                        S SK Jr  S SKJr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OperationCategory)
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       X/var/www/html/env/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   r2   ModelOperation.reduce    s)    w~i3 
t7N7N8
 	
r   c                 D    UR                  U R                  U5      (       + $ r    )r.   r"   )r#   r5   r-   s      r   r3   !ModelOperation.can_reduce_through%   s    --diiCCCr   r!   )__name__
__module____qualname____firstlineno__r$   r
   r)   r.   r2   r3   __static_attributes____classcell__r6   s   @r   r   r      s2     ! !/

D Dr   r   c                      ^  \ rS rSrSr\R                  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 )NrD   c              3   *   #    U  H	  u  pUv   M     g 7fr     .0r"   _s      r   	<genexpr>'CreateModel.__init__.<locals>.<genexpr>7   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)hasattrrR   label_lower
isinstancestrr'   )rK   bases     r   rM   rN   :   sQ       'D tW-- JJ**)3D#)>)>DI 's   AArF   c              3   *   #    U  H	  u  pUv   M     g 7fr    rI   rJ   s      r   rM   rN   C   s     *M}GD4}rO   )	rD   rE   r   ModelrP   rF   r1   r$   r   )r#   r"   rD   rE   rP   rF   r6   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"   rD   rE   rP   objectsrF   )
r"   rD   rE   rP   r   rY   rF   Managerr6   r<   r#   kwargss     r   deconstructCreateModel.deconstructE   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"   listrD   dictrE   tuplerP   rF   r#   r-   states      r   state_forwardsCreateModel.state_forwardsR   sP    		T[[!T\\"djj!T]]#		
r   c                 x   UR                   R                  XR                  5      nU R                  UR                  R
                  U5      (       aj  UR                  U5        UR                  XR                  4   nUR                  R                  S5      =n(       a  UR                  U[        5       U5        g g g )Nindex_together)apps	get_modelr"   allow_migrate_model
connectionaliascreate_modelr   r)   rE   getalter_index_togetherr   )r#   r-   schema_editor
from_stateto_statemodelto_model_staterl   s           r   database_forwardsCreateModel.database_forwards^   s    ''	99=##M$<$<$B$BEJJ&&u-
 &__Y-GHN!/!7!7!;!;<L!MM~M22E" N 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    rm   rn   r"   ro   rp   rq   delete_modelr#   r-   ru   rv   rw   rx   s         r   database_backwardsCreateModel.database_backwardsn   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 )rE   rs   r"   r(   s    r   describeCreateModel.describes   s1    ((%88Hb@II
 	
r   c                     U R                   $ r    r)   r(   s    r   migration_name_fragment#CreateModel.migration_name_fragmenty   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)   rP   r   rY   rU   rW   	ModelBaserV   r   rD   r   )r#   r"   r-   r)   reference_model_tuplerW   _namefields           r   r.   CreateModel.references_model}   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O}[        T[H        5      (       Gag  U R                  TR.                  :X  GaL  [        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      (       an  [        U R                  U R                  0 U R                  ES	/ U R                  R	                  S	/ 5      QTRR                  P0EU R                  U R                  S9/$ [        T[T        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/$ [V        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)rD   rE   rP   rF   order_with_respect_to)unique_togetherrl   c              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   rK   fr5   s     r   rM   /CreateModel.reduce.<locals>.<genexpr>.<genexpr>
  s!      *&39a)BVBV=V6s   #	#N)rf   )rK   rD   r5   s     r   rM   %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   rM   r   )  s1      ")/A 789;M;M6M	 2 2ST T)/s   +.indexesconstraints)-rU   DeleteModelr)   rE   rs   RenameModelold_name_lowerrB   r   rD   rP   rF   AlterModelOptionsALTER_OPTION_KEYSpopr"   AlterModelManagersAlterTogetherOptionOperationoption_nameoption_valueAlterOrderWithRespectTor   r   model_name_lowerr   r   r   r   copyr   filterboolr'   r   rf   r   IndexOperationAddIndexindexRemoveIndexAddConstraint
constraintRemoveConstraintr1   r2   )r#   r5   r-   rE   keynvr   optionr   rD   r   options_indexesr   options_constraintsr6   s    `             r   r2   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}55		#{{!"ll!) ,!%!1!1-!D, ) 4 4,! #jj!%  I'788 '+ll&6&6}b&I'&I
!)..8 &I $ '  		#{{!"ll!)+>! #jj!%	  w~i33] B 0 <#D's6   +c$cc=c4,c'c$	c$c)/c))rP   rD   rF   rE   )NNN)r:   r;   r<   r=   __doc__r   ADDITIONcategoryserialization_expand_argsr$   r`   ri   rz   r   r   propertyr   r.   r2   r>   r?   r@   s   @r   rB   rB   )   s[    ! ))H AO,9

 .

  .r4 r4r   rB   c                   d    \ rS rSrSr\R                  rS rS r	S r
S rS rS r\S	 5       rS
rg)r   i  zDrop a model's table.c                 P    SU R                   0nU R                  R                  / U4$ Nr"   )r"   r6   r<   r^   s     r   r`   DeleteModel.deconstruct  s+    DII
 ++R88r   c                 :    UR                  XR                  5        g r    )remove_modelr)   rg   s      r   ri   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}   r   s         r   rz   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    )rm   rn   r"   ro   rp   rq   rr   r   s         r   r   DeleteModel.database_backwards  sM    ''	99=##M$<$<$B$BEJJ&&u- Kr   c                     g)NTrI   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   rI   N)r:   r;   r<   r=   r   r   REMOVALr   r`   ri   rz   r   r.   r   r   r   r>   rI   r   r   r   r     sB     ((H97.
.

- - -r   r   c                      ^  \ rS rSrSr\R                  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   r1   r$   )r#   r   r   r6   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   r6   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   rg   s      r   ri   RenameModel.state_forwards  s    9mmT]]Cr   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                  UUR                  R                  UR                  R                  5        UR                  R                   H  nUR                  U:X  a  UnXR                  4n	OYUR                  R                  R                  UR                  R                  R                  4n	UR                   R                  " U	6 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)rm   rn   r   ro   rp   rq   r   alter_db_tablerR   db_tablerelated_objectsrelated_modelr   r-   
model_name	get_fieldr   r"   alter_fieldziplocal_many_to_manyrx   remote_fieldthroughauto_created_alter_many_to_many)r#   r-   ru   rv   rw   	new_model	old_modelrelated_objectrx   related_keyto_fieldrD   	old_field	new_fields                 r   rz   RenameModel.database_forwards  s   MM++I}}E	##M$<$<$B$BINN"11)]]KI(((((( #,//"A"A!//9<%E#,.A.A"BK '44::DD&44::EE#K %MM33[AE#==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   rz   r#   r-   ru   rv   rw   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_rL   )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    )
rU   r   r   r   r   r   r1   r   r2   r.   r4   s      r   r2   RenameModel.reduce  s    y+..##y'?'?? MM&&  ^T1
 F++DMM9EE	Fr   )r   r   r   r   )r:   r;   r<   r=   r   r   
ALTERATIONr   r$   r
   r   r   r`   ri   rz   r   r.   r   r   r   r2   r>   r?   r@   s   @r   r   r     s     ++H#
 % % % %9D.`D

H K KF Fr   r   c                   @   ^  \ rS rSr\R
                  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    )rU   r6   r   r)   r1   r2   r4   s      r   r2   ModelOptionOperation.reduce*  s@    y>>;"?@@9#7#77;w~i33r   rI   )
r:   r;   r<   r=   r   r
  r   r2   r>   r?   r@   s   @r   r  r  '  s     ++H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$ )AlterModelTablei3  zRename a model's table.c                 0   > X l         [        TU ]	  U5        g r    )tabler1   r$   )r#   r"   r  r6   s      r   r$   AlterModelTable.__init__6  s    
r   c                 f    U R                   U R                  S.nU R                  R                  / U4$ )Nr"   r  )r"   r  r6   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  rg   s      r   ri   AlterModelTable.state_forwardsA  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    )rm   rn   r"   ro   rp   rq   r   rR   r   r   r   r   r   r   )	r#   r-   ru   rv   rw   r   r   r   r   s	            r   rz   !AlterModelTable.database_forwardsD  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    rz   r   s        r   r   "AlterModelTable.database_backwardsX      %%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.describe[  s6    II**0DJJA
 	
6AA
 	
r   c                      SU R                   -  $ )Nzalter_%s_tabler   r(   s    r   r   'AlterModelTable.migration_name_fragmenta  s    $//11r   )r  )r:   r;   r<   r=   r   r$   r`   ri   rz   r   r   r   r   r>   r?   r@   s   @r   r  r  3  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$ )
AlterModelTableCommentif  c                 0   > X l         [        TU ]	  U5        g r    )table_commentr1   r$   )r#   r"   r'  r6   s      r   r$   AlterModelTableComment.__init__g  s    *r   c                 f    U R                   U R                  S.nU R                  R                  / U4$ )N)r"   r'  )r"   r'  r6   r<   r^   s     r   r`   "AlterModelTableComment.deconstructk  s2    II!//
 ++R88r   c                 T    UR                  XR                  SU R                  05        g )Ndb_table_comment)r  r)   r'  rg   s      r   ri   %AlterModelTableComment.state_forwardsr  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    )	rm   rn   r"   ro   rp   rq   alter_db_table_commentrR   r,  )r#   r-   ru   rv   rw   r   r   s          r   rz   (AlterModelTableComment.database_forwardsw  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_backwards  r  r   c                 "    SU R                    S3$ )NAlter z table commentr!   r(   s    r   r   AlterModelTableComment.describe  s    		{.11r   c                 "    SU R                    S3$ )Nalter__table_commentr   r(   s    r   r   .AlterModelTableComment.migration_name_fragment  s    (77r   )r'  )r:   r;   r<   r=   r$   r`   ri   rz   r   r   r   r   r>   r?   r@   s   @r   r%  r%  f  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   i  Nc                    > U(       a  [        [        U5      5      n[        X R                  U5        [        TU ]  U5        g r    )r   r	   setattrr   r1   r$   )r#   r"   r   r6   s      r   r$   %AlterTogetherOptionOperation.__init__  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   r6   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   rg   s      r   ri   +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                  XR                  4   nUR                  XR                  4   n[        USU R                  -  5      nU" UUR                  R                  U R                  5      =(       d
    [        5       UR                  R                  U R                  5      =(       d
    [        5       5        g g )Nzalter_%s)rm   rn   r"   ro   rp   rq   r   r)   r?  r   rE   rs   r   )	r#   r-   ru   rv   rw   r   from_model_statery   alter_togethers	            r   rz   .AlterTogetherOptionOperation.database_forwards  s    MM++IyyA	##M$<$<$B$BINN)00OO1KL%__Y-GHN$]JAQAQ4QRN ((,,T-=-=>G#%&&**4+;+;<E	 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    rI   )rK   rD   r"   s     r   rM   @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$ )Nr4  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$ )Nr7  rL   )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    )r1   r3   rU   r   typer4   s      r   r3   /AlterTogetherOptionOperation.can_reduce_through  s:    w))? 
y">? 2YtDz1	
r   rI   )r:   r;   r<   r=   r   r$   r
   r   r`   ri   rz   r   rP  r   r   r   r3   r>   r?   r@   s   @r   r   r     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    r1   r$   )r#   r"   r   r6   s      r   r$   AlterUniqueTogether.__init__  s    /r   rI   	r:   r;   r<   r=   r   r   r$   r>   r?   r@   s   @r   r[  r[    s    
 $K0 0r   r[  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.
rl   c                 $   > [         TU ]  X5        g r    r]  )r#   r"   rl   r6   s      r   r$   AlterIndexTogether.__init__  s    .r   rI   r_  r@   s   @r   ra  ra    s    
 #K/ /r   ra  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   r1   r$   )r#   r"   r   r6   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   r6   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   rg   s      r   ri   &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   )rm   rn   r"   ro   rp   rq   rR   r   remove_fieldr   has_defaultdefault	add_field)r#   r-   ru   rv   rw   to_model
from_modelr   s           r   rz   )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   rO  s       r   rP  (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  rh  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   )r:   r;   r<   r=   r   r   r$   r`   ri   rz   r   rP  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    )rE   r1   r$   )r#   r"   rE   r6   s      r   r$   AlterModelOptions.__init__@  s    r   c                 f    U R                   U R                  S.nU R                  R                  / U4$ )N)r"   rE   )r"   rE   r6   r<   r^   s     r   r`   AlterModelOptions.deconstructD  s0    II||
 ++R88r   c                 h    UR                  UU R                  U R                  U R                  5        g r    )r  r)   rE   r   rg   s      r   ri    AlterModelOptions.state_forwardsK  s*    !!OOLL""		
r   c                     g r    rI   r   s        r   rz   #AlterModelOptions.database_forwardsS      r   c                     g r    rI   r   s        r   r   $AlterModelOptions.database_backwardsV  r  r   c                      SU R                   -  $ )NzChange Meta options on %sr!   r(   s    r   r   AlterModelOptions.describeY  s    *TYY66r   c                      SU R                   -  $ )Nzalter_%s_optionsr   r(   s    r   r   )AlterModelOptions.migration_name_fragment\  s    !DOO33r   )rE   )r:   r;   r<   r=   r   r   r$   r`   ri   rz   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   ia  zAlter the model's managers.rF   c                 0   > X l         [        TU ]	  U5        g r    )rF   r1   r$   )r#   r"   rF   r6   s      r   r$   AlterModelManagers.__init__f  s     r   c                 `    U R                   R                  U R                  U R                  /0 4$ r    )r6   r<   r"   rF   r(   s    r   r`   AlterModelManagers.deconstructj  s&    ++dii-GLLr   c                 P    UR                  XR                  U R                  5        g r    )alter_model_managersr)   rF   rg   s      r   ri   !AlterModelManagers.state_forwardsm  s    ""9oot}}Mr   c                     g r    rI   r   s        r   rz   $AlterModelManagers.database_forwardsp  r  r   c                     g r    rI   r   s        r   r   %AlterModelManagers.database_backwardss  r  r   c                      SU R                   -  $ )NzChange managers on %sr!   r(   s    r   r   AlterModelManagers.describev  s    &22r   c                      SU R                   -  $ )Nzalter_%s_managersr   r(   s    r   r   *AlterModelManagers.migration_name_fragmenty  s    "T__44r   )rF   )r:   r;   r<   r=   r   r   r$   r`   ri   rz   r   r   r   r   r>   r?   r@   s   @r   r   r   a  sB    %!+MN3 5 5r   r   c                   (    \ rS rSrSr\S 5       rSrg)r   i~  r   c                 6    U R                   R                  5       $ r    )r   r'   r(   s    r   r   IndexOperation.model_name_lower  s    $$&&r   rI   N)r:   r;   r<   r=   r   r
   r   r>   rI   r   r   r   r   ~  s    K' 'r   r   c                   x   ^  \ rS rSrSr\R                  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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__  s/    $zz1389  
r   c                 P    UR                  XR                  U R                  5        g r    )	add_indexr   r   rg   s      r   ri   AddIndex.state_forwards  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    )rm   rn   r   ro   rp   rq   r  r   r   s         r   rz   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    )rm   rn   r   ro   rp   rq   remove_indexr   r   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   r6   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"   joinrV   r   rD   )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$ NrL   )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  )rU   r   r   r"   RenameIndexr   r   r   r   r1   r2   r4   s      r   r2   AddIndex.reduce  s    i--$**//Y^^2SIi--$**//YEWEW2W'00DJJOtzzJKKw~i33r   )r   r   )r:   r;   r<   r=   r   r   r   r   r$   ri   rz   r   r`   r   r   r   r2   r>   r?   r@   s   @r   r   r     sP    " ))HF7
:
	

 J J4 4r   r   c                   d    \ rS rSrSr\R                  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"   rg   s      r   ri   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    )rm   rn   r   ro   rp   rq   r   r   get_index_by_namer"   r  )r#   r-   ru   rv   rw   rx   rF  r   s           r   rz   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    )rm   rn   r   ro   rp   rq   r   r   r  r"   r  )r#   r-   ru   rv   rw   rx   ry   r   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"   r6   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_rL   r   r"   r'   r(   s    r   r   #RemoveIndex.migration_name_fragment      !%!6!6		8IJJr   r  N)r:   r;   r<   r=   r   r   r   r   r$   ri   rz   r   r`   r   r   r   r>   rI   r   r   r   r     sF    ' ((HH52	
H K Kr   r   c                      ^  \ rS rSrSr\R                  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   
old_fields)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  r6   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 )NrD   r"   )r  r  r   r   Indexr   remove_model_optionsra  r   rename_indexr   rg   s      r   ri   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                  UUSS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 )NTF)column_namesr   uniquer   zFound wrong number (z) of indexes for (r  z).r   r  )rm   rn   r   ro   rp   rq   r  rR   r   column_constraint_namesrS  r   r   r  r   r  r   r  r   r"   r   r  )r#   r-   ru   rv   rw   rx   rs  r   columnsmatching_index_name	old_indexrF  ry   	new_indexs                 r   rz   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??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   rz   r   s        r   r   RenameIndex.database_backwardsT  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.describeg  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_fragmentq  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  )rU   r  r   r   r   r   r   r   r  r1   r2   r4   s      r   r2   RenameIndex.reduce{  s    y+..%%)C)CC""##y'?'?? OO&//!]]#	  w~i33r   )r   r   r   r  r   r   )NN)r:   r;   r<   r=   r   r   r
  r   r$   r
   r   r   r`   ri   rz   r   r   r   r   r2   r>   r?   r@   s   @r   r  r    sx     ++H% % % % %	9$&@PD&
 
 
4 4r   r  c                   x   ^  \ rS rSr\R
                  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   i  r   c                     Xl         X l        g r    r   r   )r#   r   r   s      r   r$   AddConstraint.__init__  s    $$r   c                 P    UR                  XR                  U R                  5        g r    )add_constraintr   r   rg   s      r   ri   AddConstraint.state_forwards  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    )rm   rn   r   ro   rp   rq   r  r   r   s         r   rz   AddConstraint.database_forwards  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    )rm   rn   r   ro   rp   rq   remove_constraintr   r   s         r   r    AddConstraint.database_backwards  sQ    ''	??C##M$<$<$B$BEJJ++E??C Kr   c                 b    U R                   R                  / U R                  U R                  S.4$ )Nr  )r6   r:   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    )rU   r   r   r   r"   r1   r2   r4   s      r   r2   AddConstraint.reduce  sO    y"233%%)C)CC$$	6Iw~i33r   )r   r   )r:   r;   r<   r=   r   r   r   r   r$   ri   rz   r   r`   r   r   r   r2   r>   r?   r@   s   @r   r   r     sT     ))HK%PA
D


 O O4 4r   r   c                   d    \ rS rSr\R
                  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"   rg   s      r   ri   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    )rm   rn   r   ro   rp   rq   r   r   get_constraint_by_namer"   r  )r#   r-   ru   rv   rw   rx   rF  r   s           r   rz   "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    )rm   rn   r   ro   rp   rq   r   r   r  r"   r  )r#   r-   ru   rv   rw   rx   ry   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  )r6   r:   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)r:   r;   r<   r=   r   r   r   r   r$   ri   rz   r   r`   r   r   r   r>   rI   r   r   r   r     sH     ((HKM?<
S K Kr   r   N)(	django.dbr   $django.db.migrations.operations.baser   r   django.db.migrations.stater   django.db.migrations.utilsr   r   django.db.models.optionsr	   django.utils.functionalr
   rD   r   r   r   r   r   r   r   rB   r   r   r  r  r%  r   r[  ra  r   r   r   r   r   r   r  r   r   rI   r   r   <module>r-     s,    M 1 I 7 3 R RDY D(]4. ]4@"-. "-JvF. vFr	4> 	402* 02f#81 #8L?
#7 ?
D	06 	0	/5 	/AB2 ABH44, 44n5- 5:'Y '=4~ =4@*K. *KZW4. W4t04N 04f(K~ (Kr   