
    sgh                     .   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' G d0 d1e"      Z(y2)3    )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       j/var/www/enzed_healthcare/enzed_env/lib/python3.12/site-packages/django/db/migrations/operations/models.py_check_for_duplicatesr      sC    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'$(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>:   sJ        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     *MGD!4*MrE   )	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JJ 	DFLL(tfkk&;&;S%AB$T959NN	 !KK 	LE5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"              rl| j                  j                  k(  rSt        | j                  | j                  i | j                  d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*              rv| j                  j                  k(  r]t        | j                  | j                  i | j                  j,                  j.                  i| j                  | j                        gS t        t0              rl| j                  j                  k(  rSt        | j                  | j                  i | j                  dj2                  i| j                  | j                        gS t        t4              r| j                  j6                  k(  rt        t8              r]t        | j                  | j                  j                  j:                  fgz   | j                  | j                  | j                        gS t        t<              rst        | j                  | j                  D cg c]$  \  }}||j                  k(  rj:                  n|f& c}}| j                  | j                  | j                        gS t        t>              r| j                  jA                         }dD ]A  }|j                  |d       }|stC        tE        tF        fd|D                    }|s=|||<   C |j	                  d      }	|	j                  k(  r|d= t        | j                  | j                  D cg c]&  \  }}|jI                         j                  k7  r||f( c}}|| j                  | j                        gS t        tJ              rU| j                  jA                         }dD ];  }|j	                  |      }|s|D 
ch c]  }
tM        fd	|
D               c}
||<   = |j	                  d      }	|	jN                  k(  rj                  |d<   t        | j                  | j                  D cg c]$  \  }}|jN                  k(  rj                  n||f& c}}|| j                  | j                        gS t        tP              rR| j                  j6                  k(  r8t        tR              rqt        | j                  | j                  i | j                  d
g | j                  j	                  d
g       jT                  i| j                  | j                        gS t        tV              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        tX              rqt        | j                  | j                  i | j                  dg | j                  j	                  dg       jZ                  i| j                  | j                        gS t        t\              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^        |   |      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=   db_tabledb_table_comment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#      *&./Q)BVBV=V*&s   N)rZ   )rB   r;   r1   s     r   rD   z%CreateModel.reduce.<locals>.<genexpr>)  s-      !" )/ %* *&39*& %&!"s   !c              3   X   K   | ]!  }|j                   k(  rj                  n| # y wr   old_namenew_namer   s     r   rD   z%CreateModel.reduce.<locals>.<genexpr>I  s2      "$% 789;M;M6M	 2 2ST T"s   '*indexesconstraints)1rK   DeleteModelr'   r<   rf   RenameModelold_name_lowerr:   r   r;   rF   r=   AlterModelOptionsALTER_OPTION_KEYSpopr!   AlterModelManagersAlterModelTabletableAlterModelTableCommenttable_comment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*+ II;;#**!]]  y"459#7#77 II;; LL**&//  y/29#7#77 II;;,,"IOO **!]]	  y"899#7#77 II;;,,*I,C,C **!]]	  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		 )-  $1 1	3F	AN  !%"jj!%	  I{3,,++-#H :K$[[d;F!$" $!" 39	!"
" "39GK0:  )04K(L%(I,@,@@ 78		 )-  $1 wwyI,@,@@ F 
 !("jj!%
  I{3,,++-#H 	K$[[5F +10
 !'	 " ")/" 0,	 )04K(L%(I,>,>>7@7I7IG34		 )-  $1 45	8J8J3JY//PQSTU  !("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'"!)..8 '# '  		#{{!"ll!)+>! #jj!%	  w~i33] B 0 <#D's$   )e+e+e%)e* "e0"e5)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   r   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"((-- ))"((& 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_fragment1  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.reduce5  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.reduceJ  sA    y4>>;"?@9#7#77;w~i33r   )r4   r5   r6   r   r   r   r.   r7   r8   s   @r   r   r   G  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 )	r   zRename a model's table.c                 2    || _         t        | 	  |       y r   )r   r-   r#   )r"   r!   r   r2   s      r   r#   zAlterModelTable.__init__V  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.deconstructZ  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_fragment  s    $//11r   )r4   r5   r6   r   r#   rU   r]   rm   rr   rw   r   rz   r7   r8   s   @r   r   r   S  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 )r   c                 2    || _         t        | 	  |       y r   )r   r-   r#   )r"   r!   r   r2   s      r   r#   zAlterModelTableComment.__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"AlterModelTableComment.deconstruct  s2    II!//
 ++R88r   c                 V    |j                  || j                  d| j                  i       y )Nr   )r   r'   r   r[   s      r   r]   z%AlterModelTableComment.state_forwards  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_forwards  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     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     DDFNDs   )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_backwards7  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_fragmentE  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  rC  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   J  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__  s     r   c                 `    | j                   j                  | j                  | j                  gi fS r   )r2   r6   r!   r=   r&   s    r   rU   zAlterModelManagers.deconstruct  s&    ++dii-GLLr   c                 R    |j                  || j                  | j                         y r   )alter_model_managersr'   r=   r[   s      r   r]   z!AlterModelManagers.state_forwards  s    ""9doot}}Mr   c                      y r   r@   r   s        r   rm   z$AlterModelManagers.database_forwards  rC  r   c                      y r   r@   r   s        r   rr   z%AlterModelManagers.database_backwards  rC  r   c                      d| j                   z  S )NzChange managers on %sr    r&   s    r   rw   zAlterModelManagers.describe  s    &22r   c                      d| j                   z  S )Nzalter_%s_managersry   r&   s    r   rz   z*AlterModelManagers.migration_name_fragment  s    "T__44r   )r4   r5   r6   r   r   r#   rU   r]   rm   rr   rw   r   rz   r7   r8   s   @r   r   r     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   rU  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Tz3z?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                 z   t        |t              r%| j                  j                  |j                  k(  rg S t        |t              rf| j                  j                  |j
                  k(  rC|j                  | j                  _        | j                  | j                  | j                        gS t        | )  ||      S rZ  )rK   r   r   r!   RenameIndexr   r   r2   r   r-   r.   r0   s      r   r.   zAddIndex.reduce  s    i-$**//Y^^2SIi-$**//YEWEW2W'00DJJONNdooTZZNPQQ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   )rX  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!   rX  )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   rm  r!   rU  )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 Nrh  )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 )re  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   rz  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   rz  )r   r   r   rz  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!   )rz  rU  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   rz  rH   r   column_constraint_namesr  r   r   r`  r   r  r   rm  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_forwardsL  s   ''	4??C''(@(@(F(FN??#229dooNJFJoo=B
  **5188G  #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   )rz  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   rz  r&   s    r   rw   zRenameIndex.describe  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`  rz  r&   s    r   rz   z#RenameIndex.migration_name_fragment  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   rz  )rK   re  r   r   r   r   r   r   rz  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   re  re    sx     ++H% % % % %	9$&@PD&
 
 
4 4r   re  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 rc  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        |t
              r]| j                  |j                  k(  rD| j                  j                  |j                  k(  r!t        | j                  |j                        gS t        | %  ||      S r   )
rK   r   r   r   r!   AlterConstraintr   r   r-   r.   r0   s      r   r.   zAddConstraint.reduce  s    y"23%%)C)CC$$	6Iy/2%%)C)CC$$	6!$//93G3GHI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   rh  ri  s      r   r#   zRemoveConstraint.__init__  rj  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 rp  )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 rr  r&   s    r   rw   zRemoveConstraint.describe	  s    7;yy$//RRr   c                 V    d| j                   d| j                  j                         S rt  rv  r&   s    r   rz   z(RemoveConstraint.migration_name_fragment  rw  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   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   r!   r   s       r   r#   zAlterConstraint.__init__  s    $	$r   c                 h    |j                  || j                  | j                  | j                         y r   )alter_constraintr   r!   r   r[   s      r   r]   zAlterConstraint.state_forwards  s'    t,,dii	
r   c                      y r   r@   r   s        r   rm   z!AlterConstraint.database_forwards  rC  r   c                      y r   r@   r   s        r   rr   z"AlterConstraint.database_backwards"  rC  r   c                 x    | j                   j                  g | j                  | j                  | j                  dfS )Nr  )r2   r4   r   r!   r   r&   s    r   rU   zAlterConstraint.deconstruct%  s6    NN##"oo		"oo
 	
r   c                 :    d| j                    d| j                   S )NzAlter constraint r\  rr  r&   s    r   rw   zAlterConstraint.describe0  s    "499+T$//1BCCr   c                 j    d| j                   d| j                  j                  j                         S r  r  r&   s    r   rz   z'AlterConstraint.migration_name_fragment3  s&     $ 5 5t7K7K7Q7Q7STTr   c                     t        |t        t        f      r5| j                  |j                  k(  r| j                  |j                  k(  r|gS t
        |   ||      S r   )rK   r  r   r   r!   r-   r.   r0   s      r   r.   zAlterConstraint.reduce7  sP    y?4D"EF%%)C)CC		Y^^+;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    sR     ++HK%


	
D U U4 4r   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   re  r   r   r  r@   r   r   <module>r     s9    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64N 64r(K~ (KV-4n -4r   