
    g                        d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	 d dl
mZ d dlmZ ddlmZmZmZmZmZ d	 Z G d
 de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d  d!e      Z  G d" d#e      Z! G d$ d%e      Z" G d& d'e"      Z# G d( d)e"      Z$ G d* d+e"      Z% G d, d-e"      Z& G d. d/e"      Z'y0)1    )models)	OperationOperationCategory)
ModelState)field_referencesresolve_relation)normalize_together)cached_property   )AddField
AlterFieldFieldOperationRemoveFieldRenameFieldc                 t    t               }|D ])  }||v rt        d|d| d      |j                  |       + y )NzFound duplicate value z in CreateModel z
 argument.)set
ValueErroradd)arg_nameobjs	used_valsvals       ~/var/www/python.vincentserveurtest.ovh/public_html/venv/lib/python3.12/site-packages/django/db/migrations/operations/models.py_check_for_duplicatesr      s>    I)JMxX  	c     c                   @     e Zd Zd Zed        Zd Z fdZd Z xZ	S )ModelOperationc                     || _         y Nname)selfr!   s     r   __init__zModelOperation.__init__   s	    	r   c                 6    | j                   j                         S r   )r!   lowerr"   s    r   
name_lowerzModelOperation.name_lower   s    yy  r   c                 <    |j                         | j                  k(  S r   )r%   r'   r"   r!   	app_labels      r   references_modelzModelOperation.references_model   s    zz|t..r   c                 L    t         |   ||      xs | j                  ||      S r   )superreducecan_reduce_throughr"   	operationr*   	__class__s      r   r.   zModelOperation.reduce    s-    w~i3 
t7N7Ny8
 	
r   c                 <    |j                  | j                  |       S r   )r+   r!   )r"   r1   r*   s      r   r/   z!ModelOperation.can_reduce_through%   s    --diiCCCr   )
__name__
__module____qualname__r#   r
   r'   r+   r.   r/   __classcell__r2   s   @r   r   r      s,     ! !/

Dr   r   c                        e Zd ZdZej
                  Zg dZd fd	Zd Z	d Z
d Zd Zd Zed	        Zd
 Z fdZ xZS )CreateModelzCreate a model's table.)fieldsoptionsmanagersc                 @   || _         |xs i | _        |xs t        j                  f| _        |xs g | _        t        |   |       t        dd | j                   D               t        dd | j                  D               t        dd | j
                  D               y )Nr;   c              3   &   K   | ]	  \  }}|  y wr    .0r!   _s      r   	<genexpr>z'CreateModel.__init__.<locals>.<genexpr>7   s     (I['$[   basesc              3      K   | ]H  }t        |d       r|j                  j                  n!t        |t              r|j                         n| J yw)_metaN)hasattrrH   label_lower
isinstancestrr%   )rB   bases     r   rD   z'CreateModel.__init__.<locals>.<genexpr>:   sL       'D tW- JJ**)3D#)>DI 's   AAr=   c              3   &   K   | ]	  \  }}|  y wr   r@   rA   s      r   rD   z'CreateModel.__init__.<locals>.<genexpr>C   s     *M}GD!4}rE   )	r;   r<   r   ModelrF   r=   r-   r#   r   )r"   r!   r;   r<   rF   r=   r2   s         r   r#   zCreateModel.__init__/   s    }"-v||o
 B 	h(IT[[(IJ !JJ
	
 	j*Mt}}*MNr   c                    | j                   | j                  d}| j                  r| j                  |d<   | j                  r-| j                  t        j
                  fk7  r| j                  |d<   | j                  r3| j                  dt	        j                         fgk7  r| j                  |d<   | j                  j                  g |fS )N)r!   r;   r<   rF   objectsr=   )
r!   r;   r<   rF   r   rO   r=   Managerr2   r6   r"   kwargss     r   deconstructzCreateModel.deconstructE   s    IIkk
 << $F9::$**7"jjF7O==T]]	6>>;K/L.MM!%F:++R88r   c                     |j                  t        || j                  t        | j                        t        | j                        t        | j                        t        | j                                     y r   )
	add_modelr   r!   listr;   dictr<   tuplerF   r=   r"   r*   states      r   state_forwardszCreateModel.state_forwardsR   sP    		T[[!T\\"djj!T]]#		
r   c                 h   |j                   j                  || j                        }| j                  |j                  j
                  |      rf|j                  |       |j                  || j                  f   }|j                  j                  d      x}r|j                  |t               |       y y y )Nindex_together)apps	get_modelr!   allow_migrate_model
connectionaliascreate_modelr   r'   r<   getalter_index_togetherr   )r"   r*   schema_editor
from_stateto_statemodelto_model_stater_   s           r   database_forwardszCreateModel.database_forwards^   s    ''	499=##M$<$<$B$BEJ&&u-
 &__Y-GHN!/!7!7!;!;<L!MM~M22E" N Kr   c                     |j                   j                  || j                        }| j                  |j                  j
                  |      r|j                  |       y y r   r`   ra   r!   rb   rc   rd   delete_modelr"   r*   rh   ri   rj   rk   s         r   database_backwardszCreateModel.database_backwardsn   L    )))TYY?##M$<$<$B$BEJ&&u- Kr   c                 b    d| j                   j                  dd      rdndd| j                  S )NzCreate proxyFzproxy  zmodel )r<   rf   r!   r&   s    r   describezCreateModel.describes   s.    ((%8Hb@II
 	
r   c                     | j                   S r   r'   r&   s    r   migration_name_fragmentz#CreateModel.migration_name_fragmenty   s    r   c                 j   |j                         }|| j                  k(  ry||f}| j                  D ]Q  }|t        j                  ust        |t        j                  j                  t        f      sAt        ||      |k(  sQ y | j                  D ]   \  }}t        || j                  f||      s  y y)NTF)r%   r'   rF   r   rO   rK   rM   	ModelBaserL   r   r;   r   )r"   r!   r*   r'   reference_model_tuplerM   _namefields           r   r+   zCreateModel.references_model}   s    ZZ\
( "+J 7JJDFLL(tfkk&;&;S%AB$T959NN  !KKLE5DOO,e5J 	 (
 r   c                    t        t              r7| j                  j                  k(  r| j                  j	                  dd      sg S t        t
              r\| j                  j                  k(  rCt        j                  | j                  | j                  | j                  | j                        gS t        t              r| j                  j                  k(  ri | j                  j                  }j                  D ]#  }|j                  vs|j                  |d        % t        | j                  | j                  || j                  | j                        gS t        t               r\| j                  j                  k(  rCt        | j                  | j                  | j                  | j                  j                        gS t        t"              rv| j                  j                  k(  r]t        | j                  | j                  i | j                  j$                  j&                  i| j                  | j                        gS t        t(              rl| j                  j                  k(  rSt        | j                  | j                  i | j                  dj*                  i| j                  | j                        gS t        t,              r| j                  j.                  k(  rt        t0              r]t        | j                  | j                  j                  j2                  fgz   | j                  | j                  | j                        gS t        t4              rst        | j                  | j                  D cg c]$  \  }}||j                  k(  rj2                  n|f& c}}| j                  | j                  | j                        gS t        t6              r| j                  j9                         }dD ]A  }|j                  |d       }|st;        t=        t>        fd|D                    }|s=|||<   C |j	                  d      }	|	j                  k(  r|d= t        | j                  | j                  D cg c]&  \  }}|jA                         j                  k7  r||f( c}}|| j                  | j                        gS t        tB              rU| j                  j9                         }dD ];  }|j	                  |      }|s|D 
ch c]  }
tE        fd|
D               c}
||<   = |j	                  d      }	|	jF                  k(  rj                  |d<   t        | j                  | j                  D cg c]$  \  }}|jF                  k(  rj                  n||f& c}}|| j                  | j                        gS t        tH              rR| j                  j.                  k(  r8t        tJ              rqt        | j                  | j                  i | j                  dg | j                  j	                  dg       jL                  i| j                  | j                        gS t        tN              r| j                  j	                  dg       D cg c]  }|j                  j                  k7  r| }}t        | j                  | j                  i | j                  d|i| j                  | j                        gS t        tP              rqt        | j                  | j                  i | j                  d	g | j                  j	                  d	g       jR                  i| j                  | j                        gS t        tT              r| j                  j	                  d	g       D cg c]  }|j                  j                  k7  r| }}t        | j                  | j                  i | j                  d	|i| j                  | j                        gS tV        |   |      S c c}}w c c}}w c c}
w c c}}w c c}w c c}w )
Nru   F)r;   r<   rF   r=   order_with_respect_to)unique_togetherr_   c              3   F   K   | ]  }t        fd |D                yw)c              3   B   K   | ]  }|j                   k7  s|  y wr   ry   rB   fr1   s     r   rD   z/CreateModel.reduce.<locals>.<genexpr>.<genexpr>
  s"      *&39aQ)BVBV=V6s   N)rZ   )rB   r;   r1   s     r   rD   z%CreateModel.reduce.<locals>.<genexpr>	  s/      !" 39 %* *&39*& %& 39s   !c              3   X   K   | ]!  }|j                   k(  rj                  n| # y wr   old_namenew_namer   s     r   rD   z%CreateModel.reduce.<locals>.<genexpr>)  s2      ")/A 789;M;M6M	 2 2ST T)/s   '*indexesconstraints)-rK   DeleteModelr'   r<   rf   RenameModelold_name_lowerr:   r   r;   rF   r=   AlterModelOptionsALTER_OPTION_KEYSpopr!   AlterModelManagersAlterTogetherOptionOperationoption_nameoption_valueAlterOrderWithRespectTor   r   model_name_lowerr   r   r   r   copyr   filterboolr%   r   rZ   r   IndexOperationAddIndexindexRemoveIndexAddConstraint
constraintRemoveConstraintr-   r.   )r"   r1   r*   r<   keynvr   optionr   r;   r   options_indexesr   options_constraintsr2   s    `             r   r.   zCreateModel.reduce   s   y+.9#7#77LL$$We4Iy+.9#;#;; &&;; LL**!]]  y"349#7#77;;):):;G 22i///KKT* 3 II;;#**!]]  y"4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9#=#==)X.		#{{y~~y.O-PP $"jj!%  Iz2		 )- (31 1	3F	AN(3  !%"jj!%	  I{3,,++-#HK$[[d;F!$" $!" 39	!"
" "39GK0 $I  )04K(L%(I,@,@@ 78		 )- (31 wwyI,@,@@ F(3 
 !("jj!%
  I{3,,++-#HK$[[5F +10
 +1	 " ")/"  +10, $I )04K(L%(I,>,>>7@7I7IG34		 )- (31 45	8J8J3JY//PQSTU(3  !("jj!%	  y.19#=#==)X.		#{{!"ll!% (!%!1!1)R!@( )(! #jj!%  I{3 "&!1!1)R!@#!@zzY^^3 !@   #  		#{{!"ll!%! #jj!%	  I}5		#{{!"ll!) ,!%!1!1-!D, ) 4 4,! #jj!%  I'78 '+ll&6&6}b&I'&I
!)..8 &I $ '  		#{{!"ll!)+>! #jj!%	  w~i33] B 0 <#D's$   )a!+a'3a-$)a2"a8$"a=)NNN)r4   r5   r6   __doc__r   ADDITIONcategoryserialization_expand_argsr#   rU   r]   rm   rr   rw   propertyrz   r+   r.   r7   r8   s   @r   r:   r:   )   s[    ! ))H AO,9

 .

  .r4 r4r   r:   c                   \    e Zd ZdZej
                  Zd Zd Zd Z	d Z
d Zd Zed        Zy	)
r   zDrop a model's table.c                 P    d| j                   i}| j                  j                  g |fS Nr!   )r!   r2   r6   rS   s     r   rU   zDeleteModel.deconstruct  s+    DII
 ++R88r   c                 <    |j                  || j                         y r   )remove_modelr'   r[   s      r   r]   zDeleteModel.state_forwards  s    9doo6r   c                     |j                   j                  || j                        }| j                  |j                  j
                  |      r|j                  |       y y r   ro   rq   s         r   rm   zDeleteModel.database_forwards  rs   r   c                     |j                   j                  || j                        }| j                  |j                  j
                  |      r|j                  |       y y r   )r`   ra   r!   rb   rc   rd   re   rq   s         r   rr   zDeleteModel.database_backwards  sL    ''	499=##M$<$<$B$BEJ&&u- Kr   c                      y)NTr@   r)   s      r   r+   zDeleteModel.references_model  s     r   c                      d| j                   z  S )NzDelete model %sr    r&   s    r   rw   zDeleteModel.describe  s     499,,r   c                      d| j                   z  S )Nz	delete_%sry   r&   s    r   rz   z#DeleteModel.migration_name_fragment  s    T__,,r   N)r4   r5   r6   r   r   REMOVALr   rU   r]   rm   rr   r+   rw   r   rz   r@   r   r   r   r     sB     ((H97.
.

- - -r   r   c                        e Zd ZdZej
                  Z fdZed        Z	ed        Z
d Zd Zd Zd Zd	 Zd
 Zed        Z fdZ xZS )r   zRename a model.c                 @    || _         || _        t        |   |       y r   )r   r   r-   r#   )r"   r   r   r2   s      r   r#   zRenameModel.__init__  s      "r   c                 6    | j                   j                         S r   r   r%   r&   s    r   r   zRenameModel.old_name_lower      }}""$$r   c                 6    | j                   j                         S r   r   r%   r&   s    r   new_name_lowerzRenameModel.new_name_lower  r   r   c                 f    | j                   | j                  d}| j                  j                  g |fS )Nr   )r   r   r2   r6   rS   s     r   rU   zRenameModel.deconstruct  s0    
 ++R88r   c                 R    |j                  || j                  | j                         y r   )rename_modelr   r   r[   s      r   r]   zRenameModel.state_forwards  s    9dmmT]]Cr   c                 ~   |j                   j                  || j                        }| j                  |j                  j
                  |      r|j                   j                  || j                        }|j                  ||j                  j                  |j                  j                         |j                  j                  D ]  }|j                  |k(  r|}|| j                  f}	nY|j                  j                  j                  |j                  j                  j                  f}	 |j                   j                  |	 } |j                   j                  |	 j                  j                  |j                   j"                        }
|j%                  ||j                   |
        t'        |j                  j(                  |j                  j(                        }|D ]^  \  }}|j*                  |j                  k(  s*|j,                  j.                  j                  j0                  sJ|j3                  |||d       ` y y )NF)strict)r`   ra   r   rb   rc   rd   r   alter_db_tablerH   db_tablerelated_objectsrelated_modelr   r*   
model_name	get_fieldr   r!   alter_fieldziplocal_many_to_manyrk   remote_fieldthroughauto_created_alter_many_to_many)r"   r*   rh   ri   rj   	new_model	old_modelrelated_objectrk   related_keyto_fieldr;   	old_field	new_fields                 r   rm   zRenameModel.database_forwards  s   MM++It}}E	##M$<$<$B$BIN"11)T]]KI(((((( #,//"A"A!//9<%E#,d.A.A"BK '44::DD&44::EE#K 4HMM33[AE28==22K@FFPP"((-- ))"(( #B& 22IOO4V4VF )/$	9 OOy'>'>>$1199??LL11 	 2  )/? Or   c                 D   | j                   | j                  c| _        | _         | j                  | j                  c| _        | _        | j	                  ||||       | j                   | j                  c| _        | _         | j                  | j                  c| _        | _        y r   )r   r   r   r   rm   r"   r*   rh   ri   rj   s        r   rr   zRenameModel.database_backwards  s     	1T0 (,}}dmm$t}y-XN  	1T0 (,}}dmm$t}r   c                 z    |j                         | j                  k(  xs |j                         | j                  k(  S r   )r%   r   r   r)   s      r   r+   zRenameModel.references_model	  s1    JJLD///V4::<4CVCV3V	
r   c                 :    d| j                   d| j                  S )NzRename model  to r   r&   s    r   rw   zRenameModel.describe  s    *.--GGr   c                 :    d| j                   d| j                  S Nrename_rC   )r   r   r&   s    r   rz   z#RenameModel.migration_name_fragment  s    !%!4!4d6I6IJJr   c                     t        |t              r:| j                  |j                  k(  r!t        | j                  |j
                        gS t        t        | #  ||      xs |j                  | j
                  |       S r   )
rK   r   r   r   r   r   r-   r   r.   r+   r0   s      r   r.   zRenameModel.reduce  s~    y+.##y'?'?? MM&&  ^T1y
 F++DMM9EE	Fr   )r4   r5   r6   r   r   
ALTERATIONr   r#   r
   r   r   rU   r]   rm   rr   r+   rw   r   rz   r.   r7   r8   s   @r   r   r     s     ++H#
 % % % %9D.`D

H K KF Fr   r   c                   6     e Zd Zej                  Z fdZ xZS )ModelOptionOperationc                     t        || j                  t        f      r| j                  |j                  k(  r|gS t        |   ||      S r   )rK   r2   r   r'   r-   r.   r0   s      r   r.   zModelOptionOperation.reduce*  sA    y4>>;"?@9#7#77;w~i33r   )r4   r5   r6   r   r   r   r.   r7   r8   s   @r   r   r   '  s     ++H4 4r   r   c                   P     e Zd ZdZ fdZd Zd Zd Zd Zd Z	e
d        Z xZS )	AlterModelTablezRename a model's table.c                 2    || _         t        | 	  |       y r   )tabler-   r#   )r"   r!   r   r2   s      r   r#   zAlterModelTable.__init__6  s    
r   c                 f    | j                   | j                  d}| j                  j                  g |fS )Nr!   r   )r!   r   r2   r6   rS   s     r   rU   zAlterModelTable.deconstruct:  s0    IIZZ
 ++R88r   c                 V    |j                  || j                  d| j                  i       y )Nr   )alter_model_optionsr'   r   r[   s      r   r]   zAlterModelTable.state_forwardsA  s!    !!)T__z4::>VWr   c                    |j                   j                  || j                        }| j                  |j                  j
                  |      r@|j                   j                  || j                        }|j                  ||j                  j                  |j                  j                         t        |j                  j                  |j                  j                        D ]  \  }}|j                  j                  j                  j                  s1|j                  |j                  j                  |j                  j                  j                  j                  |j                  j                  j                  j                          y y r   )r`   ra   r!   rb   rc   rd   r   rH   r   r   r   r   r   r   )	r"   r*   rh   ri   rj   r   r   r   r   s	            r   rm   z!AlterModelTable.database_forwardsD  s"   MM++ItyyA	##M$<$<$B$BIN"11)TYYGI(((((( ),22IOO4V4V)$	9 ))1177DD!00!..66!..66<<EE!..66<<EE	) Or   c                 *    | j                  ||||      S r   rm   r   s        r   rr   z"AlterModelTable.database_backwardsX      %%i
HUUr   c                 Z    d| j                   d| j                  | j                  S dS )NzRename table for r   z	(default)r   r&   s    r   rw   zAlterModelTable.describe[  s6    II**0DJJA
 	
6AA
 	
r   c                      d| j                   z  S )Nzalter_%s_tablery   r&   s    r   rz   z'AlterModelTable.migration_name_fragmenta  s    $//11r   )r4   r5   r6   r   r#   rU   r]   rm   rr   rw   r   rz   r7   r8   s   @r   r   r   3  s:    !9X(V
 2 2r   r   c                   L     e Zd Z fdZd Zd Zd Zd Zd Ze	d        Z
 xZS )AlterModelTableCommentc                 2    || _         t        | 	  |       y r   )table_commentr-   r#   )r"   r!   r   r2   s      r   r#   zAlterModelTableComment.__init__g  s    *r   c                 f    | j                   | j                  d}| j                  j                  g |fS )N)r!   r   )r!   r   r2   r6   rS   s     r   rU   z"AlterModelTableComment.deconstructk  s2    II!//
 ++R88r   c                 V    |j                  || j                  d| j                  i       y )Ndb_table_comment)r   r'   r   r[   s      r   r]   z%AlterModelTableComment.state_forwardsr  s'    !!t);T=O=O(P	
r   c                 `   |j                   j                  || j                        }| j                  |j                  j
                  |      rb|j                   j                  || j                        }|j                  ||j                  j                  |j                  j                         y y r   )	r`   ra   r!   rb   rc   rd   alter_db_table_commentrH   r   )r"   r*   rh   ri   rj   r   r   s          r   rm   z(AlterModelTableComment.database_forwardsw  s    MM++ItyyA	##M$<$<$B$BIN"11)TYYGI000000 Or   c                 *    | j                  ||||      S r   r   r   s        r   rr   z)AlterModelTableComment.database_backwards  r   r   c                 "    d| j                    dS )NAlter z table commentr    r&   s    r   rw   zAlterModelTableComment.describe  s    		{.11r   c                 "    d| j                    dS )Nalter__table_commentry   r&   s    r   rz   z.AlterModelTableComment.migration_name_fragment  s    (77r   )r4   r5   r6   r#   rU   r]   rm   rr   rw   r   rz   r7   r8   s   @r   r   r   f  s6    9

V2 8 8r   r   c                   p     e Zd ZdZ fdZed        Zd Zd Zd Z	d Z
d Zd	 Zed
        Z fdZ xZS )r   Nc                 ~    |rt        t        |            }t        | | j                  |       t        |   |       y r   )r   r	   setattrr   r-   r#   )r"   r!   r   r2   s      r   r#   z%AlterTogetherOptionOperation.__init__  s5    1,?@Ld&&5r   c                 .    t        | | j                        S r   )getattrr   r&   s    r   r   z)AlterTogetherOptionOperation.option_value  s    tT--..r   c                 |    d| j                   | j                  | j                  i}| j                  j                  g |fS r   )r!   r   r   r2   r6   rS   s     r   rU   z(AlterTogetherOptionOperation.deconstruct  s<    DIId//
 ++R88r   c                 j    |j                  || j                  | j                  | j                  i       y r   )r   r'   r   r   r[   s      r   r]   z+AlterTogetherOptionOperation.state_forwards  s.    !!OOt001	
r   c                    |j                   j                  || j                        }| j                  |j                  j
                  |      r|j                  || j                  f   }|j                  || j                  f   }t        |d| j                  z        } |||j                  j                  | j                        xs
 t               |j                  j                  | j                        xs
 t                      y y )Nzalter_%s)r`   ra   r!   rb   rc   rd   r   r'   r  r   r<   rf   r   )	r"   r*   rh   ri   rj   r   from_model_staterl   alter_togethers	            r   rm   z.AlterTogetherOptionOperation.database_forwards  s    MM++ItyyA	##M$<$<$B$BIN)00DOO1KL%__Y-GHN$]JAQAQ4QRN ((,,T-=-=>G#%&&**4+;+;<E	 Or   c                 *    | j                  ||||      S r   r   r   s        r   rr   z/AlterTogetherOptionOperation.database_backwards  r   r   c                     | j                  ||      xr- | j                   xs t        fd| j                  D              S )Nc              3   &   K   | ]  }|v  
 y wr   r@   )rB   r;   r!   s     r   rD   z@AlterTogetherOptionOperation.references_field.<locals>.<genexpr>  s     D2CDFN2Cs   )r+   r   anyr"   r   r!   r*   s     ` r   references_fieldz-AlterTogetherOptionOperation.references_field  sC    $$Z; 
!!! ED$2C2CDD	
r   c           	      p    d| j                   d| j                  dt        | j                  xs d      dS )Nr   z for z (rv   z constraint(s)))r   r!   lenr   r&   s    r   rw   z%AlterTogetherOptionOperation.describe  s/    II!!'R(
 	
r   c                 :    d| j                   d| j                  S )Nr  rC   )r'   r   r&   s    r   rz   z4AlterTogetherOptionOperation.migration_name_fragment  s     $1A1ABBr   c                 x    t         |   ||      xs( t        |t              xr t	        |      t	        |       uS r   )r-   r/   rK   r   typer0   s      r   r/   z/AlterTogetherOptionOperation.can_reduce_through  s<    w))Y? 
y">? 2YtDz1	
r   )r4   r5   r6   r   r#   r
   r   rU   r]   rm   rr   r  rw   r   rz   r/   r7   r8   s   @r   r   r     s`    K / /9

V

 C C
 
r   r   c                   &     e Zd ZdZdZ fdZ xZS )AlterUniqueTogetherz|
    Change the value of unique_together to the target one.
    Input value of unique_together must be a set of tuples.
    r   c                 &    t         |   ||       y r   r-   r#   )r"   r!   r   r2   s      r   r#   zAlterUniqueTogether.__init__  s    /r   r4   r5   r6   r   r   r#   r7   r8   s   @r   r  r    s    
 $K0 0r   r  c                   &     e Zd ZdZdZ fdZ xZS )AlterIndexTogetherzz
    Change the value of index_together to the target one.
    Input value of index_together must be a set of tuples.
    r_   c                 &    t         |   ||       y r   r  )r"   r!   r_   r2   s      r   r#   zAlterIndexTogether.__init__  s    ~.r   r  r8   s   @r   r  r    s    
 #K/ /r   r  c                   Z     e Zd ZdZdZ fdZd Zd Zd Zd Z	d Z
d	 Zed
        Z xZS )r   z9Represent a change with the order_with_respect_to option.r   c                 2    || _         t        | 	  |       y r   )r   r-   r#   )r"   r!   r   r2   s      r   r#   z AlterOrderWithRespectTo.__init__  s    %:"r   c                 f    | j                   | j                  d}| j                  j                  g |fS )Nr!   r   )r!   r   r2   r6   rS   s     r   rU   z#AlterOrderWithRespectTo.deconstruct  s2    II%)%?%?
 ++R88r   c                 j    |j                  || j                  | j                  | j                  i       y r   )r   r'   r   r   r[   s      r   r]   z&AlterOrderWithRespectTo.state_forwards  s.    !!OOt99:	
r   c                 ~   |j                   j                  || j                        }| j                  |j                  j
                  |      r|j                   j                  || j                        }|j                  j                  rB|j                  j                  s,|j                  ||j                  j                  d             y |j                  j                  r\|j                  j                  sE|j                  j                  d      }|j                         sd|_        |j                  ||       y y y y )N_orderr   )r`   ra   r!   rb   rc   rd   rH   r   remove_fieldr   has_defaultdefault	add_field)r"   r*   rh   ri   rj   to_model
from_modelr   s           r   rm   z)AlterOrderWithRespectTo.database_forwards  s    ==**9dii@##M$<$<$B$BHM#229diiHJ   66 <<**
 0 0 : :8 D 44"((>> 00:((*$%EM'' ? 5 Nr   c                 ,    | j                  ||||       y r   r   r   s        r   rr   z*AlterOrderWithRespectTo.database_backwards  s    y-XNr   c                 h    | j                  ||      xr | j                  d u xs || j                  k(  S r   )r+   r   r  s       r   r  z(AlterOrderWithRespectTo.references_field  s:    $$Z; 
&&$.T$$:T:T2T	
r   c                 :    d| j                   d| j                  S )NzSet order_with_respect_to on r   r$  r&   s    r   rw   z AlterOrderWithRespectTo.describe  s    II&&
 	
r   c                      d| j                   z  S )Nzalter_%s_order_with_respect_tory   r&   s    r   rz   z/AlterOrderWithRespectTo.migration_name_fragment%  s    /$//AAr   )r4   r5   r6   r   r   r#   rU   r]   rm   rr   r  rw   r   rz   r7   r8   s   @r   r   r     sE    C)K9
4O


 B Br   r   c                   X     e Zd ZdZg dZ fdZd Zd Zd Zd Z	d Z
ed	        Z xZS )
r   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                 2    || _         t        | 	  |       y r   )r<   r-   r#   )r"   r!   r<   r2   s      r   r#   zAlterModelOptions.__init__@  s    r   c                 f    | j                   | j                  d}| j                  j                  g |fS )N)r!   r<   )r!   r<   r2   r6   rS   s     r   rU   zAlterModelOptions.deconstructD  s0    II||
 ++R88r   c                 h    |j                  || j                  | j                  | j                         y r   )r   r'   r<   r   r[   s      r   r]   z AlterModelOptions.state_forwardsK  s*    !!OOLL""		
r   c                      y r   r@   r   s        r   rm   z#AlterModelOptions.database_forwardsS      r   c                      y r   r@   r   s        r   rr   z$AlterModelOptions.database_backwardsV  rB  r   c                      d| j                   z  S )NzChange Meta options on %sr    r&   s    r   rw   zAlterModelOptions.describeY  s    *TYY66r   c                      d| j                   z  S )Nzalter_%s_optionsry   r&   s    r   rz   z)AlterModelOptions.migration_name_fragment\  s    !DOO33r   )r4   r5   r6   r   r   r#   rU   r]   rm   rr   rw   r   rz   r7   r8   s   @r   r   r   *  sB    9
7 4 4r   r   c                   V     e Zd ZdZdgZ fdZd Zd Zd Zd Z	d Z
ed	        Z xZS )
r   zAlter the model's managers.r=   c                 2    || _         t        | 	  |       y r   )r=   r-   r#   )r"   r!   r=   r2   s      r   r#   zAlterModelManagers.__init__f  s     r   c                 `    | j                   j                  | j                  | j                  gi fS r   )r2   r6   r!   r=   r&   s    r   rU   zAlterModelManagers.deconstructj  s&    ++dii-GLLr   c                 R    |j                  || j                  | j                         y r   )alter_model_managersr'   r=   r[   s      r   r]   z!AlterModelManagers.state_forwardsm  s    ""9doot}}Mr   c                      y r   r@   r   s        r   rm   z$AlterModelManagers.database_forwardsp  rB  r   c                      y r   r@   r   s        r   rr   z%AlterModelManagers.database_backwardss  rB  r   c                      d| j                   z  S )NzChange managers on %sr    r&   s    r   rw   zAlterModelManagers.describev  s    &22r   c                      d| j                   z  S )Nzalter_%s_managersry   r&   s    r   rz   z*AlterModelManagers.migration_name_fragmenty  s    "T__44r   )r4   r5   r6   r   r   r#   rU   r]   rm   rr   rw   r   rz   r7   r8   s   @r   r   r   a  sB    %!+MN3 5 5r   r   c                        e Zd ZdZed        Zy)r   r   c                 6    | j                   j                         S r   )r   r%   r&   s    r   r   zIndexOperation.model_name_lower  s    $$&&r   N)r4   r5   r6   r   r
   r   r@   r   r   r   r   ~  s    K' 'r   r   c                   n     e Zd ZdZej
                  Zd Zd Zd Z	d Z
d Zd Zed        Z fd	Z xZS )
r   zAdd an index on a model.c                 T    || _         |j                  st        d|z        || _        y )NzSIndexes passed to AddIndex operations require a name argument. %r doesn't have one.)r   r!   r   r   )r"   r   r   s      r   r#   zAddIndex.__init__  s3    $zz1389  
r   c                 R    |j                  || j                  | j                         y r   )	add_indexr   r   r[   s      r   r]   zAddIndex.state_forwards  s    	4#8#8$**Er   c                     |j                   j                  || j                        }| j                  |j                  j
                  |      r|j                  || j                         y y r   )r`   ra   r   rb   rc   rd   rT  r   rq   s         r   rm   zAddIndex.database_forwards  sR    ''	4??C##M$<$<$B$BEJ##E4::6 Kr   c                     |j                   j                  || j                        }| j                  |j                  j
                  |      r|j                  || j                         y y r   )r`   ra   r   rb   rc   rd   remove_indexr   rq   s         r   rr   zAddIndex.database_backwards  sR    )))T__E##M$<$<$B$BEJ&&udjj9 Kr   c                 f    | j                   | j                  d}| j                  j                  g |fS N)r   r   )r   r   r2   r6   rS   s     r   rU   zAddIndex.deconstruct  s6    //ZZ

 NN''
 	
r   c                    | j                   j                  rcd| j                   j                  ddj                  | j                   j                  D cg c]  }t	        |       c}      d| j
                  S d| j                   j                  ddj                  | j                   j                        d| j
                  S c c}w )NzCreate index  on , 
 on model z on field(s) z
 of model )r   expressionsr!   joinrL   r   r;   )r"   
expressions     r   rw   zAddIndex.describe  s    ::!!

		TZZ=S=ST=Sz3z?=STU  " JJOOIIdjj''(OO
 	
 Us   Cc                 h    | j                   d| j                  j                  j                         S NrC   )r   r   r!   r%   r&   s    r   rz   z AddIndex.migration_name_fragment  s$    //1F1F1HIIr   c                 n   t        |t              r%| j                  j                  |j                  k(  rg S t        |t              r`| j                  j                  |j
                  k(  r=|j                  | j                  _        t        | j                  | j                        gS t        | )  ||      S rY  )rK   r   r   r!   RenameIndexr   r   r   r   r-   r.   r0   s      r   r.   zAddIndex.reduce  s~    i-$**//Y^^2SIi-$**//YEWEW2W'00DJJOtzzJKKw~i33r   )r4   r5   r6   r   r   r   r   r#   r]   rm   rr   rU   rw   r   rz   r.   r7   r8   s   @r   r   r     sP    " ))HF7
:
	

 J J4 4r   r   c                   \    e Zd ZdZej
                  Zd Zd Zd Z	d Z
d Zd Zed        Zy	)
r   zRemove an index from a model.c                      || _         || _        y r   r   r!   r"   r   r!   s      r   r#   zRemoveIndex.__init__      $	r   c                 R    |j                  || j                  | j                         y r   )rW  r   r!   r[   s      r   r]   zRemoveIndex.state_forwards  s    9d&;&;TYYGr   c                 .   |j                   j                  || j                        }| j                  |j                  j
                  |      rI|j                  || j                  f   }|j                  | j                        }|j                  ||       y y r   )r`   ra   r   rb   rc   rd   r   r   get_index_by_namer!   rW  )r"   r*   rh   ri   rj   rk   r  r   s           r   rm   zRemoveIndex.database_forwards  s~    )))T__E##M$<$<$B$BEJ)00D<Q<Q1QR$66tyyAE&&ue4 Kr   c                 .   |j                   j                  || j                        }| j                  |j                  j
                  |      rI|j                  || j                  f   }|j                  | j                        }|j                  ||       y y r   )r`   ra   r   rb   rc   rd   r   r   rl  r!   rT  )r"   r*   rh   ri   rj   rk   rl   r   s           r   rr   zRemoveIndex.database_backwards  s{    ''	4??C##M$<$<$B$BEJ%__Y8M8M-MNN"44TYY?E##E51 Kr   c                 f    | j                   | j                  d}| j                  j                  g |fS Nrg  )r   r!   r2   r6   rS   s     r   rU   zRemoveIndex.deconstruct  s6    //II

 NN''
 	
r   c                 :    d| j                   d| j                  S )NzRemove index z from r!   r   r&   s    r   rw   zRemoveIndex.describe  s    ,0IItGGr   c                 V    d| j                   d| j                  j                         S Nremove_rC   r   r!   r%   r&   s    r   rz   z#RemoveIndex.migration_name_fragment      !%!6!6		8IJJr   N)r4   r5   r6   r   r   r   r   r#   r]   rm   rr   rU   rw   r   rz   r@   r   r   r   r     sF    ' ((HH52	
H K Kr   r   c                        e Zd ZdZej
                  ZddZed        Z	ed        Z
d Zd Zd Zd Zd	 Zed
        Z fdZ xZS )rd  zRename an index.c                 x    |s|st        d      |r|rt        d      || _        || _        || _        || _        y )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   ry  s        r   r#   zRenameIndex.__init__  sN    
  
M  %  $r   c                 6    | j                   j                         S r   r   r&   s    r   r   zRenameIndex.old_name_lower  r   r   c                 6    | j                   j                         S r   r   r&   s    r   r   zRenameIndex.new_name_lower  r   r   c                     | j                   | j                  d}| j                  r| j                  |d<   | j                  r| j                  |d<   | j                  j
                  g |fS )N)r   r   r   ry  )r   r   r   ry  r2   r6   rS   s     r   rU   zRenameIndex.deconstruct  sZ    //
 ==!%F:??#'??F< ++R88r   c                 z   | j                   r}|j                  || j                  t        j                  | j                   | j
                               |j                  || j                  t        j                  | j                          y |j                  || j                  | j                  | j
                         y )Nr;   r!   )ry  rT  r   r   Indexr   remove_model_optionsr  r   rename_indexr   r[   s      r   r]   zRenameIndex.state_forwards  s    ??OO%%DOO$--H
 &&%%"..	 400$--r   c           
         |j                   j                  || j                        }| j                  |j                  j
                  |      sy | j                  r|j                   j                  || j                        }| j                  D cg c]'  }|j                  j                  |      j                  ) }}|j                  ||dd      }	t        |	      dk7  rAt        dt        |	      d|j                  j                  ddj                  |      d	      t        j                   | j                  |	d
         }
n6|j                  || j"                  f   }|j%                  | j&                        }
|
j(                  | j*                  k(  ry |j                  || j"                  f   }|j%                  | j*                        }|j-                  ||
|       y c c}w )NTF)column_namesr   uniquer   zFound wrong number (z) of indexes for (r\  z).r   r~  )r`   ra   r   rb   rc   rd   ry  rH   r   column_constraint_namesr  r   r   r_  r   r  r   rl  r   r!   r   r  )r"   r*   rh   ri   rj   rk   r-  r   columnsmatching_index_name	old_indexr  rl   	new_indexs                 r   rm   zRenameIndex.database_forwards,  s   ''	4??C''(@(@(F(FN??#229dooNJFJooFUU
  **5188o   #0"A"A$	 #B # &'1,  /0"((11		'*	  (+I
  *00D<Q<Q1QR(::4==II>>T]]*!D4I4I)IJ"44T]]C	""5)Y??s   ,Gc                 ^   | j                   ry | j                  | j                  c| _        | _        | j                  | j                  c| _        | _        | j                  ||||       | j                  | j                  c| _        | _        | j                  | j                  c| _        | _        y r   )ry  r   r   r   r   rm   r   s        r   rr   zRenameIndex.database_backwardsT  s    ??  	1T0 (,}}dmm$t}y-XN  	1T0 (,}}dmm$t}r   c                     | j                   r)d| j                    d| j                   d| j                   S d| j                   d| j                   d| j                   S )NzRename index r[  r   zRename unnamed index for )r   r   r   ry  r&   s    r   rw   zRenameIndex.describeg  s_    ==d4??2C4W ('8T__<MT}}o	
r   c                     | j                   rd| j                  d| j                  S d| j                  ddj	                  | j
                        d| j                  S r   )r   r   r   r   r_  ry  r&   s    r   rz   z#RenameIndex.migration_name_fragmentq  sS    ==%)%8%8$:M:MNN  !!HHT__%
 	
r   c                 0   t        |t              rv| j                  |j                  k(  r]|j                  rQ| j                  |j
                  k(  r8t        | j                  |j                  | j                  | j                        gS t        | )  ||      S )N)r   r   ry  )rK   rd  r   r   r   r   r   r   ry  r-   r.   r0   s      r   r.   zRenameIndex.reduce{  s    y+.%%)C)CC""##y'?'?? OO&//!]]#	  w~i33r   )NN)r4   r5   r6   r   r   r   r   r#   r
   r   r   rU   r]   rm   rr   rw   r   rz   r.   r7   r8   s   @r   rd  rd    sx     ++H% % % % %	9$&@PD&
 
 
4 4r   rd  c                   n     e Zd Zej                  ZdZd Zd Zd Z	d Z
d Zd Zed        Z fd	Z xZS )
r   r   c                      || _         || _        y r   r   r   )r"   r   r   s      r   r#   zAddConstraint.__init__  s    $$r   c                 R    |j                  || j                  | j                         y r   )add_constraintr   r   r[   s      r   r]   zAddConstraint.state_forwards  s    Y(=(=tOr   c                     |j                   j                  || j                        }| j                  |j                  j
                  |      r|j                  || j                         y y r   )r`   ra   r   rb   rc   rd   r  r   rq   s         r   rm   zAddConstraint.database_forwards  sR    ''	4??C##M$<$<$B$BEJ((@ Kr   c                     |j                   j                  || j                        }| j                  |j                  j
                  |      r|j                  || j                         y y r   )r`   ra   r   rb   rc   rd   remove_constraintr   rq   s         r   rr   z AddConstraint.database_backwards  sR    ''	4??C##M$<$<$B$BEJ++E4??C Kr   c                 b    | j                   j                  g | j                  | j                  dfS )Nr  )r2   r4   r   r   r&   s    r   rU   zAddConstraint.deconstruct  s/    NN##"oo"oo
 	
r   c                 N    d| j                   j                  d| j                  S )NzCreate constraint r]  )r   r!   r   r&   s    r   rw   zAddConstraint.describe  s     OO  OO
 	
r   c                 h    | j                   d| j                  j                  j                         S rb  )r   r   r!   r%   r&   s    r   rz   z%AddConstraint.migration_name_fragment  s&    //1E1E1K1K1MNNr   c                     t        |t              r>| j                  |j                  k(  r%| j                  j                  |j                  k(  rg S t
        |   ||      S r   )rK   r   r   r   r!   r-   r.   r0   s      r   r.   zAddConstraint.reduce  sN    y"23%%)C)CC$$	6Iw~i33r   )r4   r5   r6   r   r   r   r   r#   r]   rm   rr   rU   rw   r   rz   r.   r7   r8   s   @r   r   r     sT     ))HK%PA
D


 O O4 4r   r   c                   \    e Zd Zej                  ZdZd Zd Zd Z	d Z
d Zd Zed        Zy	)
r   r   c                      || _         || _        y r   rg  rh  s      r   r#   zRemoveConstraint.__init__  ri  r   c                 R    |j                  || j                  | j                         y r   )r  r   r!   r[   s      r   r]   zRemoveConstraint.state_forwards  s    	4+@+@$))Lr   c                 .   |j                   j                  || j                        }| j                  |j                  j
                  |      rI|j                  || j                  f   }|j                  | j                        }|j                  ||       y y r   )r`   ra   r   rb   rc   rd   r   r   get_constraint_by_namer!   r  )r"   r*   rh   ri   rj   rk   r  r   s           r   rm   z"RemoveConstraint.database_forwards  s~    ''	4??C##M$<$<$B$BEJ)00D<Q<Q1QR)@@KJ++E:> Kr   c                 .   |j                   j                  || j                        }| j                  |j                  j
                  |      rI|j                  || j                  f   }|j                  | j                        }|j                  ||       y y r   )r`   ra   r   rb   rc   rd   r   r   r  r!   r  )r"   r*   rh   ri   rj   rk   rl   r   s           r   rr   z#RemoveConstraint.database_backwards  s{    ''	4??C##M$<$<$B$BEJ%__Y8M8M-MNN'>>tyyIJ((
; Kr   c                 b    | j                   j                  g | j                  | j                  dfS ro  )r2   r4   r   r!   r&   s    r   rU   zRemoveConstraint.deconstruct  s/    NN##"oo		
 	
r   c                 :    d| j                   d| j                  S )NzRemove constraint z from model rq  r&   s    r   rw   zRemoveConstraint.describe  s    7;yy$//RRr   c                 V    d| j                   d| j                  j                         S rs  ru  r&   s    r   rz   z(RemoveConstraint.migration_name_fragment  rv  r   N)r4   r5   r6   r   r   r   r   r#   r]   rm   rr   rU   rw   r   rz   r@   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
   r;   r   r   r   r   r   r   r   r:   r   r   r   r   r   r   r  r  r   r   r   r   r   r   rd  r   r   r@   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   