
    af̪                        d dl mZ d dlmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlmZ ddlmZ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&d0S )1    )models)	Operation)
ModelState)field_referencesresolve_relation)normalize_together)cached_property   )AddField
AlterFieldFieldOperationRemoveFieldRenameFieldc                     t                      }|D ]1}||v rt          d|d| d          |                    |           2d S )NzFound duplicate value z in CreateModel z
 argument.)set
ValueErroradd)arg_nameobjs	used_valsvals       X/var/www/html/env/lib/python3.11/site-packages/django/db/migrations/operations/models.py_check_for_duplicatesr      sj    I  )*JM##xxxX   	c     c                   F     e Zd Zd Zed             Zd Z fdZd Z xZ	S )ModelOperationc                     || _         d S Nname)selfr    s     r   __init__zModelOperation.__init__   s    			r   c                 4    | j                                         S r   )r    lowerr!   s    r   
name_lowerzModelOperation.name_lower   s    y   r   c                 <    |                                 | j        k    S r   r$   r&   r!   r    	app_labels      r   references_modelzModelOperation.references_model   s    zz||t..r   c                 t    t                                          ||          p|                     ||          S r   )superreducecan_reduce_throughr!   	operationr*   	__class__s      r   r.   zModelOperation.reduce    s9    ww~~i33 
t7N7Ny8
 8
 	
r   c                 :    |                     | j        |           S r   )r+   r    )r!   r1   r*   s      r   r/   z!ModelOperation.can_reduce_through%   s    --diCCCCr   )
__name__
__module____qualname__r"   r	   r&   r+   r.   r/   __classcell__r2   s   @r   r   r      s           ! ! _!/ / /
 
 
 
 

D D D D D D Dr   r   c                   p     e Zd Zd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managersNc                 ^   || _         |pi | _        |pt          j        f| _        |pg | _        t                                          |           t          dd | j         D                        t          dd | j        D                        t          dd | j        D                        d S )Nr;   c              3       K   | ]	\  }}|V  
d S r    .0r    _s      r   	<genexpr>z'CreateModel.__init__.<locals>.<genexpr>6   s&      (I(I'$(I(I(I(I(I(Ir   basesc              3      K   | ]K}t          |d           r|j        j        n*t          |t                    r|                                n|V  LdS )_metaN)hasattrrG   label_lower
isinstancestrr$   )rB   bases     r   rD   z'CreateModel.__init__.<locals>.<genexpr>9   st         	 4))
&& dC((TZZ\\\     r   r=   c              3       K   | ]	\  }}|V  
d S r   r@   rA   s      r   rD   z'CreateModel.__init__.<locals>.<genexpr>B   s&      *M*MGD!4*M*M*M*M*M*Mr   )	r;   r<   r   ModelrE   r=   r-   r"   r   )r!   r    r;   r<   rE   r=   r2   s         r   r"   zCreateModel.__init__.   s    }"-v|o
 B 	h(I(IT[(I(I(IJJJ  !J  
	
 
	
 
	
 	j*M*Mt}*M*M*MNNNNNr   c                    | j         | j        d}| j        r
| j        |d<   | j        r | j        t          j        fk    r
| j        |d<   | j        r)| j        dt	          j                    fgk    r
| j        |d<   | j        j	        g |fS )N)r    r;   r<   rE   objectsr=   )
r    r;   r<   rE   r   rN   r=   Managerr2   r6   r!   kwargss     r   deconstructzCreateModel.deconstructD   s    Ik
 
 < 	- $F9: 	)$*77"jF7O= 	/T]	6>;K;K/L.MMM!%F:+R88r   c                     |                     t          || j        t          | j                  t          | j                  t          | j                  t          | j	                                       d S r   )
	add_modelr   r    listr;   dictr<   tuplerE   r=   r!   r*   states      r   state_forwardszCreateModel.state_forwardsQ   sk    	T[!!T\""dj!!T]## 		
 		
 		
 		
 		
r   c                     |j                             || j                  }|                     |j        j        |          r|                    |           d S d S r   apps	get_modelr    allow_migrate_model
connectionaliascreate_modelr!   r*   schema_editor
from_stateto_statemodels         r   database_forwardszCreateModel.database_forwards]   ]    ''	49==##M$<$BEJJ 	.&&u-----	. 	.r   c                     |j                             || j                  }|                     |j        j        |          r|                    |           d S d S r   r_   r`   r    ra   rb   rc   delete_modelre   s         r   database_backwardszCreateModel.database_backwardsb   ]    )))TY??##M$<$BEJJ 	.&&u-----	. 	.r   c                 V    d| j                             dd          rdndd| j        S )NzCreate proxyFzproxy  zmodel )r<   getr    r%   s    r   describezCreateModel.describeg   s9     ((%88@HHb@@II
 	
r   c                     | j         S r   r&   r%   s    r   migration_name_fragmentz#CreateModel.migration_name_fragmentm   s
    r   c                 J   |                                 }|| j        k    rdS ||f}| j        D ]M}|t          j        ur=t          |t          j        j        t          f          rt          ||          |k    r dS N| j
        D ] \  }}t          || j        f||          r dS !dS )NTF)r$   r&   rE   r   rN   rJ   rL   	ModelBaserK   r   r;   r   )r!   r    r*   r&   reference_model_tuplerL   _namefields           r   r+   zCreateModel.references_modelq   s    ZZ\\
((4 "+J 7J 	 	DFL((tfk&;S%ABB )$T9559NNNtt !K 	 	LE5DO,e5J   tt ur   c                    t          t                    r-| j        j        k    r| j                            dd          sg S t          t
                    r>| j        j        k    r.t          j        | j	        | j        | j
        | j                  gS t          t                    rr| j        j        k    rbi | j        j        }j        D ]!}|j        vr|                    |d            "t          | j        | j	        || j
        | j                  gS t          t                     r>| j        j        k    r.t          | j        | j	        | j        | j
        j                  gS t          t"                    rN| j        j        k    r>t          | j        | j	        i | j        j        j        i| j
        | j                  gS t          t(                    rI| j        j        k    r9t          | j        | j	        i | j        dj        i| j
        | j                  gS t          t,                    rG| j        j        k    r6t          t0                    r>t          | j        | j	        j        j        fgz   | j        | j
        | j                  gS t          t4                    r:t          | j        fd| j	        D             | j        | j
        | j                  gS t          t6                    r| j                                        }dD ]O}|                    |d           }|r5t;          t=          t>          fd|D                                 }|r|||<   P|                    d          }|j        k    r|d= t          | j        fd| j	        D             || j
        | j                  gS t          t@                    r| j                                        }dD ]*}|                    |          }|rfd	|D             ||<   +|                    d          }|j!        k    r
j        |d<   t          | j        fd
| j	        D             || j
        | j                  gS nt          tD                    r| j        j        k    rt          tF                    rVt          | j        | j	        i | j        dg | j                            dg           j$        i| j
        | j                  gS t          tJ                    r[fd| j                            dg           D             }t          | j        | j	        i | j        d|i| j
        | j                  gS t          tL                    rŉj'        rfd| j                            dg           D             }	|	r|	| j        d<   n| j                            dd            t          | j        | j	        i | j        dg | j                            dg           tQ          j)        j'        j                  i| j
        | j                  gS tU                      +                    |          S )Nrr   F)r;   r<   rE   r=   order_with_respect_toc                 B    g | ]\  }}||j         k    rj        n|fS r@   )r    r}   rB   nvr1   s      r   
<listcomp>z&CreateModel.reduce.<locals>.<listcomp>   sD           $1 1	3F3F	AN     r   )unique_togetherindex_togetherc              3   N   K   | ]}t          fd |D                       V   dS )c              3   2   K   | ]}|j         k    |V  d S r   rw   rB   fr1   s     r   rD   z/CreateModel.reduce.<locals>.<genexpr>.<genexpr>   s9       *& *&./Q)BV=V=V=V=V=V=V*& *&r   NrY   rB   r;   r1   s     r   rD   z%CreateModel.reduce.<locals>.<genexpr>   si       !" !" )/ %* *& *& *& *&39*& *& *& %& %&!" !" !" !" !" !"r   c                 X    g | ]&\  }}|                                 j        k    "||f'S r@   r(   r   s      r   r   z&CreateModel.reduce.<locals>.<listcomp>  sA           $1 wwyyI,@@@ F@@@r   c                 F    h | ]}t          fd |D                       S )c              3   @   K   | ]}|j         k    rj        n|V  d S r   old_namenew_namer   s     r   rD   z/CreateModel.reduce.<locals>.<setcomp>.<genexpr>  sM       " "$% 789;M6M6M	 2 2ST" " " " " "r   r   r   s     r   	<setcomp>z%CreateModel.reduce.<locals>.<setcomp>  s[     0 0 0
 !'	 " " " " ")/" " "  0 0 0r   c                 B    g | ]\  }}|j         k    rj        n||fS r@   r   r   s      r   r   z&CreateModel.reduce.<locals>.<listcomp>)  sI           $1 45	8J3J3JY//PQSTU     r   indexesc                 4    g | ]}|j         j         k    |S r@   r   )rB   indexr1   s     r   r   z&CreateModel.reduce.<locals>.<listcomp>G  s2     # # #zY^33 333r   c                 *    h | ]}|j         k    |S r@   )
old_fieldsr   s     r   r   z%CreateModel.reduce.<locals>.<setcomp>Y  s1     * * *!555 555r   r   r;   r    ),rJ   DeleteModelr&   r<   rt   RenameModelold_name_lowerr:   r   r;   rE   r=   AlterModelOptionsALTER_OPTION_KEYSpopr    AlterModelManagersAlterTogetherOptionOperationoption_nameoption_valueAlterOrderWithRespectTor   r   model_name_lowerr   r}   r   r   copyr   filterboolr   r   IndexOperationAddIndexr   RemoveIndexRenameIndexr   r   Indexr-   r.   )r!   r1   r*   r<   keyr   optionr   options_indexesoptions_index_togetherr2   s    `        r   r.   zCreateModel.reduce   sI   y+..i	9#777L$$We44 8 Iy+..c	9#;;; &; L*!]    y"344V	9#777;;):;G 2 + +i///KKT***I;#*!]    y"455E	9#777 I; L*&/    y">??x	9#777 I;,$0)2HI *!]	 	 	  y"9::h	9#777 I;,/1P  *!]	 	 	  y.11X	9#===)X.. S	#{y~y.O-PP $"j!%    Iz22 I	       (,      !%"j!%	 	 	  I{33 <,++--#H : :K$[[d;;F :!$" $!" !" !" !" 39	!" !" !" 
" 
" " :39GK0(/4K(L(L%(I,@@@ 78	       (,     
 !("j!%
 
 
  I{33 ,++--#H 	 	K$[[55F 0 0 0 0
 +10 0 0, )04K(L(L%(I,>>>7@7IG34	       (,      !("j!%	 	 	 8 y.11@	9#===)X.. <	#{!"l!% (!%!1!1)R!@!@( )(! ! #j!%    I{33 ,# # # #!%!1!1)R!@!@# # #  	#{!"l!%! ! #j!%	 	 	  I{33 	8L * * * *"&,"2"23CR"H"H* * *&
 * =5KDL!122L$$%5t<<<	#{!"l!% (!%!1!1)R!@!@( &+4+?iFX!" !" !"(! ! #j!%   " ww~~i333r   )NNN)r4   r5   r6   __doc__serialization_expand_argsr"   rT   r\   rj   ro   ru   propertyrx   r+   r.   r7   r8   s   @r   r:   r:   )   s        !! A A AO O O O O O,9 9 9

 

 

. . .
. . .

 
 
   X  .k4 k4 k4 k4 k4 k4 k4 k4 k4r   r:   c                   L    e Zd ZdZd Zd Zd Zd Zd Zd Z	e
d             Zd	S )
r   zDrop a model's table.c                 2    d| j         i}| j        j        g |fS Nr    )r    r2   r6   rR   s     r   rT   zDeleteModel.deconstructy  s$    DI
 +R88r   c                 <    |                     || j                   d S r   )remove_modelr&   rZ   s      r   r\   zDeleteModel.state_forwards  s     9do66666r   c                     |j                             || j                  }|                     |j        j        |          r|                    |           d S d S r   rm   re   s         r   rj   zDeleteModel.database_forwards  rp   r   c                     |j                             || j                  }|                     |j        j        |          r|                    |           d S d S r   r^   re   s         r   ro   zDeleteModel.database_backwards  rk   r   c                     dS )NTr@   r)   s      r   r+   zDeleteModel.references_model  s	     tr   c                     d| j         z  S )NzDelete model %sr   r%   s    r   ru   zDeleteModel.describe  s     49,,r   c                     d| j         z  S )Nz	delete_%srw   r%   s    r   rx   z#DeleteModel.migration_name_fragment  s    T_,,r   N)r4   r5   r6   r   rT   r\   rj   ro   r+   ru   r   rx   r@   r   r   r   r   v  s        9 9 97 7 7. . .
. . .
  
- - - - - X- - -r   r   c                        e Zd Zd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                 f    || _         || _        t                                          |           d S r   )r   r   r-   r"   )r!   r   r   r2   s      r   r"   zRenameModel.__init__  s/      """""r   c                 4    | j                                         S r   r   r$   r%   s    r   r   zRenameModel.old_name_lower      }""$$$r   c                 4    | j                                         S r   r   r$   r%   s    r   new_name_lowerzRenameModel.new_name_lower  r   r   c                 >    | j         | j        d}| j        j        g |fS )Nr   )r   r   r2   r6   rR   s     r   rT   zRenameModel.deconstruct  s,    
 
 +R88r   c                 H    |                     || j        | j                   d S r   )rename_modelr   r   rZ   s      r   r\   zRenameModel.state_forwards  s$    9dmT]CCCCCr   c                 2   |j                             || j                  }|                     |j        j        |          rS|j                             || j                  }|                    ||j        j	        |j        j	                   |j        j
        D ]}|j        |k    r|}|| j        f}	n)|j        }|j        j        j        |j        j        j        f}	 |j         j        |	 j                            |j        j                  }
|                    ||j        |
           t'          |j        j        |j        j                  }|D ]G\  }}|j        |j        k    s|j        j        j        j        s,|                    |||d           Fd S d S )NF)strict)r_   r`   r   ra   rb   rc   r   alter_db_tablerG   db_tablerelated_objectsrelated_modelr   r*   
model_name	get_fieldr}   r    alter_fieldziplocal_many_to_manyri   remote_fieldthroughauto_created_alter_many_to_many)r!   r*   rf   rg   rh   	new_model	old_modelrelated_objectri   related_keyto_fieldr;   	old_field	new_fields                 r   rj   zRenameModel.database_forwards  s   M++It}EE	##M$<$BINN ,	"11)T]KKI((((   #,/"A  !/9<<%E#,d.A"BKK*8E&4:D&4:E#K 38=2K@FPP"(-  ))"(    2IO4V F )/  $	9 Oy'>>>$19?L ? 11 	 2    O,	 ,	> r   c                     | j         | j        c| _        | _         | j        | j        c| _        | _        |                     ||||           | j         | j        c| _        | _         | j        | j        c| _        | _        d S r   )r   r   r   r   rj   r!   r*   rf   rg   rh   s        r   ro   zRenameModel.database_backwards  s     	1T0 (,}dm$t}y-XNNN  	1T0 (,}dm$t}}}r   c                 v    |                                 | j        k    p|                                 | j        k    S r   )r$   r   r   r)   s      r   r+   zRenameModel.references_model  s/    JJLLD//V4::<<4CV3V	
r   c                 &    d| j         d| j        S )NzRename model  to r   r%   s    r   ru   zRenameModel.describe  s     *.---GGr   c                 &    d| j         d| j        S Nrename_rC   )r   r   r%   s    r   rx   z#RenameModel.migration_name_fragment  s     !%!4!4!4d6I6IJJr   c                    t          |t                    r+| j        |j        k    rt          | j        |j                  gS t          t          |                               ||          p|	                    | j        |           S r   )
rJ   r   r   r   r   r   r-   r   r.   r+   r0   s      r   r.   zRenameModel.reduce  s    y+..		#y'??? M&   ^T**11y
 
 F++DM9EEE	Fr   )r4   r5   r6   r   r"   r	   r   r   rT   r\   rj   ro   r+   ru   r   rx   r.   r7   r8   s   @r   r   r     s       # # # # #
 % % _% % % _%9 9 9D D D. . .`D D D
 
 

H H H K K XKF F F F F F F F Fr   r   c                        e Zd Z fdZ xZS )ModelOptionOperationc                     t          || j        t          f          r| j        |j        k    r|gS t	                                          ||          S r   )rJ   r2   r   r&   r-   r.   r0   s      r   r.   zModelOptionOperation.reduce  sL    y4>;"?@@	9#777;ww~~i333r   )r4   r5   r6   r.   r7   r8   s   @r   r   r     s8        4 4 4 4 4 4 4 4 4r   r   c                   V     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                 X    || _         t                                          |           d S r   )tabler-   r"   )r!   r    r   r2   s      r   r"   zAlterModelTable.__init__  s(    
r   c                 >    | j         | j        d}| j        j        g |fS )Nr    r   )r    r   r2   r6   rR   s     r   rT   zAlterModelTable.deconstruct!  s,    IZ
 
 +R88r   c                 L    |                     || j        d| j        i           d S )Nr   )alter_model_optionsr&   r   rZ   s      r   r\   zAlterModelTable.state_forwards(  s)    !!)T_z4:>VWWWWWr   c                 2   |j                             || j                  }|                     |j        j        |          r|j                             || j                  }|                    ||j        j        |j        j                   t          |j        j
        |j        j
                  D ]f\  }}|j        j        j        j        rI|                    |j        j        |j        j        j        j        |j        j        j        j                   ed S d S r   )r_   r`   r    ra   rb   rc   r   rG   r   r   r   r   r   r   )	r!   r*   rf   rg   rh   r   r   r   r   s	            r   rj   z!AlterModelTable.database_forwards+  s   M++ItyAA	##M$<$BINN 	"11)TYGGI((((   ),2IO4V) )  $	9 )17D !00!.6!.6<E!.6<E  	 	 r   c                 2    |                      ||||          S r   rj   r   s        r   ro   z"AlterModelTable.database_backwards?      %%i
HUUUr   c                 8    d| j         d| j        | j        ndS )NzRename table for r   z	(default)r   r%   s    r   ru   zAlterModelTable.describeB  s*     III*0DJJkA
 	
r   c                     d| j         z  S )Nzalter_%s_tablerw   r%   s    r   rx   z'AlterModelTable.migration_name_fragmentH  s    $/11r   )r4   r5   r6   r   r"   rT   r\   rj   ro   ru   r   rx   r7   r8   s   @r   r   r     s        !!    9 9 9X X X  (V V V
 
 
 2 2 X2 2 2 2 2r   r   c                   R     e Zd Z fdZd Zd Zd Zd Zd Ze	d             Z
 xZS )AlterModelTableCommentc                 X    || _         t                                          |           d S r   )table_commentr-   r"   )r!   r    r   r2   s      r   r"   zAlterModelTableComment.__init__N  s)    *r   c                 >    | j         | j        d}| j        j        g |fS )N)r    r   )r    r   r2   r6   rR   s     r   rT   z"AlterModelTableComment.deconstructR  s-    I!/
 
 +R88r   c                 L    |                     || j        d| j        i           d S )Ndb_table_comment)r   r&   r   rZ   s      r   r\   z%AlterModelTableComment.state_forwardsY  s6    !!t);T=O(P	
 	
 	
 	
 	
r   c                     |j                             || j                  }|                     |j        j        |          rM|j                             || j                  }|                    ||j        j        |j        j                   d S d S r   )	r_   r`   r    ra   rb   rc   alter_db_table_commentrG   r  )r!   r*   rf   rg   rh   r   r   s          r   rj   z(AlterModelTableComment.database_forwards^  s    M++ItyAA	##M$<$BINN 	"11)TYGGI0000    	 	r   c                 2    |                      ||||          S r   r   r   s        r   ro   z)AlterModelTableComment.database_backwardsh  r   r   c                     d| j          dS )NAlter z table commentr   r%   s    r   ru   zAlterModelTableComment.describek  s    1	1111r   c                     d| j          dS )Nalter__table_commentrw   r%   s    r   rx   z.AlterModelTableComment.migration_name_fragmentn  s    77777r   )r4   r5   r6   r"   rT   r\   rj   ro   ru   r   rx   r7   r8   s   @r   r   r   M  s            9 9 9
 
 

  V V V2 2 2 8 8 X8 8 8 8 8r   r   c                   |     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	                                          |           d S r   )r   r   setattrr   r-   r"   )r!   r    r   r2   s      r   r"   z%AlterTogetherOptionOperation.__init__v  sU     	A1,??@@Ld&555r   c                 ,    t          | | j                  S r   )getattrr   r%   s    r   r   z)AlterTogetherOptionOperation.option_value|  s    tT-...r   c                 J    d| j         | j        | j        i}| j        j        g |fS r   )r    r   r   r2   r6   rR   s     r   rT   z(AlterTogetherOptionOperation.deconstruct  s/    DId/
 +R88r   c                 V    |                     || j        | j        | j        i           d S r   )r   r&   r   r   rZ   s      r   r\   z+AlterTogetherOptionOperation.state_forwards  s:    !!Ot01	
 	
 	
 	
 	
r   c           
         |j                             || j                  }|                     |j        j        |          r|j                             || j                  }t          |d| j        z            } ||t          |j        | j        t                                t          |j        | j        t                                           d S d S )Nzalter_%s)
r_   r`   r    ra   rb   rc   r  r   rG   r   )r!   r*   rf   rg   rh   r   r   alter_togethers           r   rj   z.AlterTogetherOptionOperation.database_forwards  s    M++ItyAA	##M$<$BINN 	"11)TYGGI$]JAQ4QRRNN	)9355AA	)9355AA    	 	r   c                 2    |                      ||||          S r   r   r   s        r   ro   z/AlterTogetherOptionOperation.database_backwards  r   r   c                     |                      ||          o'| j         pt          fd| j        D                       S )Nc              3       K   | ]}|v V  	d S r   r@   )rB   r;   r    s     r   rD   z@AlterTogetherOptionOperation.references_field.<locals>.<genexpr>  s'      DDDFNDDDDDDr   )r+   r   anyr!   r   r    r*   s     ` r   references_fieldz-AlterTogetherOptionOperation.references_field  sR    $$Z;; 
!! EDDDD$2CDDDDD	
r   c                 V    d| j         d| j        dt          | j        pd          dS )Nr  z for z (rs   z constraint(s)))r   r    lenr   r%   s    r   ru   z%AlterTogetherOptionOperation.describe  s<     III!'R((((
 	
r   c                 &    d| j         d| j        S )Nr  rC   )r&   r   r%   s    r   rx   z4AlterTogetherOptionOperation.migration_name_fragment  s      $1A1ABBr   c                     t                                          ||          p2t          |t                    ot	          |          t	          |           uS r   )r-   r/   rJ   r   typer0   s      r   r/   z/AlterTogetherOptionOperation.can_reduce_through  sK    ww)))Y?? 
y">?? 2YtDzz1	
r   )r4   r5   r6   r   r"   r	   r   rT   r\   rj   ro   r  ru   r   rx   r/   r7   r8   s   @r   r   r   s  s        K     / / _/9 9 9
 
 
	 	 	V V V
 
 

 
 
 C C X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                 L    t                                          ||           d S 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    sI         
 $K0 0 0 0 0 0 0 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                 L    t                                          ||           d S r   r!  )r!   r    r   r2   s      r   r"   zAlterIndexTogether.__init__  s#    ~.....r   r"  r8   s   @r   r$  r$    sI         
 #K/ / / / / / / / /r   r$  c                   `     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                 X    || _         t                                          |           d S r   )r   r-   r"   )r!   r    r   r2   s      r   r"   z AlterOrderWithRespectTo.__init__  s)    %:"r   c                 >    | j         | j        d}| j        j        g |fS )Nr    r   )r    r   r2   r6   rR   s     r   rT   z#AlterOrderWithRespectTo.deconstruct  s-    I%)%?
 
 +R88r   c                 V    |                     || j        | j        | j        i           d S r   )r   r&   r   r   rZ   s      r   r\   z&AlterOrderWithRespectTo.state_forwards  s:    !!Ot9:	
 	
 	
 	
 	
r   c                 (   |j                             || j                  }|                     |j        j        |          r|j                             || j                  }|j        j        r<|j        j        s0|                    ||j        	                    d                     d S |j        j        r[|j        j        sQ|j        	                    d          }|
                                sd|_        |                    ||           d S d S d S d S )N_orderr   )r_   r`   r    ra   rb   rc   rG   r   remove_fieldr   has_defaultdefault	add_field)r!   r*   rf   rg   rh   to_model
from_modelr}   s           r   rj   z)AlterOrderWithRespectTo.database_forwards  s>   =**9di@@##M$<$BHMM 	#229diHHJ  6 < **
 0 : :8 D D     4
"(>
 !00::((** &$%EM''    '	 	
 
 
 
r   c                 6    |                      ||||           d S r   r   r   s        r   ro   z*AlterOrderWithRespectTo.database_backwards  s"    y-XNNNNNr   c                 V    |                      ||          o| j        d u p
|| j        k    S r   )r+   r   r  s       r   r  z(AlterOrderWithRespectTo.references_field   s7    $$Z;; 
&$.T$$:T2T	
r   c                 &    d| j         d| j        S )NzSet order_with_respect_to on r   r)  r%   s    r   ru   z AlterOrderWithRespectTo.describe  s      III&&
 	
r   c                     d| j         z  S )Nzalter_%s_order_with_respect_torw   r%   s    r   rx   z/AlterOrderWithRespectTo.migration_name_fragment  s    /$/AAr   )r4   r5   r6   r   r   r"   rT   r\   rj   ro   r  ru   r   rx   r7   r8   s   @r   r   r     s        CC)K    9 9 9
 
 
  4O O O
 
 


 
 
 B B XB B B B Br   r   c                   ^     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                 X    || _         t                                          |           d S r   )r<   r-   r"   )r!   r    r<   r2   s      r   r"   zAlterModelOptions.__init__&  s(    r   c                 >    | j         | j        d}| j        j        g |fS )N)r    r<   )r    r<   r2   r6   rR   s     r   rT   zAlterModelOptions.deconstruct*  s,    I|
 
 +R88r   c                 T    |                     || j        | j        | j                   d S r   )r   r&   r<   r   rZ   s      r   r\   z AlterModelOptions.state_forwards1  s7    !!OL"		
 	
 	
 	
 	
r   c                     d S r   r@   r   s        r   rj   z#AlterModelOptions.database_forwards9      r   c                     d S r   r@   r   s        r   ro   z$AlterModelOptions.database_backwards<  rG  r   c                     d| j         z  S )NzChange Meta options on %sr   r%   s    r   ru   zAlterModelOptions.describe?  s    *TY66r   c                     d| j         z  S )Nzalter_%s_optionsrw   r%   s    r   rx   z)AlterModelOptions.migration_name_fragmentB  s    !DO33r   )r4   r5   r6   r   r   r"   rT   r\   rj   ro   ru   r   rx   r7   r8   s   @r   r   r     s               9 9 9
 
 
    7 7 7 4 4 X4 4 4 4 4r   r   c                   \     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                 X    || _         t                                          |           d S r   )r=   r-   r"   )r!   r    r=   r2   s      r   r"   zAlterModelManagers.__init__L  s(     r   c                 8    | j         j        | j        | j        gi fS r   )r2   r6   r    r=   r%   s    r   rT   zAlterModelManagers.deconstructP  s    +di-GLLr   c                 H    |                     || j        | j                   d S r   )alter_model_managersr&   r=   rZ   s      r   r\   z!AlterModelManagers.state_forwardsS  s$    ""9dot}MMMMMr   c                     d S r   r@   r   s        r   rj   z$AlterModelManagers.database_forwardsV  rG  r   c                     d S r   r@   r   s        r   ro   z%AlterModelManagers.database_backwardsY  rG  r   c                     d| j         z  S )NzChange managers on %sr   r%   s    r   ru   zAlterModelManagers.describe\  s    &22r   c                     d| j         z  S )Nzalter_%s_managersrw   r%   s    r   rx   z*AlterModelManagers.migration_name_fragment_  s    "T_44r   )r4   r5   r6   r   r   r"   rT   r\   rj   ro   ru   r   rx   r7   r8   s   @r   r   r   G  s        %%!+    M M MN N N    3 3 3 5 5 X5 5 5 5 5r   r   c                   (    e Zd ZdZed             ZdS )r   r   c                 4    | j                                         S r   )r   r$   r%   s    r   r   zIndexOperation.model_name_lowerg  s    $$&&&r   N)r4   r5   r6   r   r	   r   r@   r   r   r   r   d  s2        K' ' _' ' 'r   r   c                   \     e Zd 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   zAdd an index on a model.c                 T    || _         |j        st          d|z            || _        d S )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__o  s?    $z 	1389   


r   c                 H    |                     || j        | j                   d S r   )	add_indexr   r   rZ   s      r   r\   zAddIndex.state_forwardsx  s#    	4#8$*EEEEEr   c                     |j                             || j                  }|                     |j        j        |          r|                    || j                   d S d S r   )r_   r`   r   ra   rb   rc   rY  r   re   s         r   rj   zAddIndex.database_forwards{  sa    ''	4?CC##M$<$BEJJ 	7##E4:66666	7 	7r   c                     |j                             || j                  }|                     |j        j        |          r|                    || j                   d S d S r   )r_   r`   r   ra   rb   rc   remove_indexr   re   s         r   ro   zAddIndex.database_backwards  sa    )))T_EE##M$<$BEJJ 	:&&udj99999	: 	:r   c                 >    | j         | j        d}| j        j        g |fS N)r   r   )r   r   r2   r6   rR   s     r   rT   zAddIndex.deconstruct  s2    /Z
 

 N'
 	
r   c                 
   | j         j        rAd| j         j        dd                    d | j         j        D                       d| j        S d| j         j        dd                    | j         j                  d| j        S )NzCreate index  on , c                 ,    g | ]}t          |          S r@   )rK   )rB   
expressions     r   r   z%AddIndex.describe.<locals>.<listcomp>  s    TTTz3z??TTTr   
 on model z on field(s) z
 of model )r   expressionsr    joinr   r;   r%   s    r   ru   zAddIndex.describe  s    :! 	 	
		TTTZ=STTTUUUU 	 JOOOIIdj'((((OO
 	
r   c                 R    | j         d| j        j                                        S NrC   )r   r   r    r$   r%   s    r   rx   z AddIndex.migration_name_fragment  s)    ///1F1F1H1H1HIIr   c                 N   t          |t                    r| j        j        |j        k    rg S t          |t                    rB| j        j        |j        k    r-|j        | j        _        t          | j        | j                  gS t                      
                    ||          S r^  )rJ   r   r   r    r   r   r   r   r   r-   r.   r0   s      r   r.   zAddIndex.reduce  s    i-- 	$*/Y^2S2SIi-- 	L$*/YEW2W2W'0DJOtzJJJKKww~~i333r   )r4   r5   r6   r   r"   r\   rj   ro   rT   ru   r   rx   r.   r7   r8   s   @r   r   r   l  s        ""  F F F7 7 7
: : :
	
 	
 	

 
 
 J J XJ4 4 4 4 4 4 4 4 4r   r   c                   L    e Zd ZdZd Zd Zd Zd Zd Zd Z	e
d             Zd	S )
r   zRemove an index from a model.c                 "    || _         || _        d S r   r   r    r!   r   r    s      r   r"   zRemoveIndex.__init__      $			r   c                 H    |                     || j        | j                   d S r   )r\  r   r    rZ   s      r   r\   zRemoveIndex.state_forwards  s%    9d&;TYGGGGGr   c                    |j                             || j                  }|                     |j        j        |          rF|j        || j        f         }|                    | j	                  }|
                    ||           d S d S r   )r_   r`   r   ra   rb   rc   r   r   get_index_by_namer    r\  )r!   r*   rf   rg   rh   ri   from_model_stater   s           r   rj   zRemoveIndex.database_forwards  s    )))T_EE##M$<$BEJJ 	5)0D<Q1QR$66tyAAE&&ue44444	5 	5r   c                    |j                             || j                  }|                     |j        j        |          rF|j        || j        f         }|                    | j	                  }|
                    ||           d S d S r   )r_   r`   r   ra   rb   rc   r   r   rq  r    rY  )r!   r*   rf   rg   rh   ri   to_model_stater   s           r   ro   zRemoveIndex.database_backwards  s    ''	4?CC##M$<$BEJJ 	2%_Y8M-MNN"44TY??E##E511111	2 	2r   c                 >    | j         | j        d}| j        j        g |fS Nrl  )r   r    r2   r6   rR   s     r   rT   zRemoveIndex.deconstruct  s2    /I
 

 N'
 	
r   c                 &    d| j         d| j        S )NzRemove index z from r    r   r%   s    r   ru   zRemoveIndex.describe  s     ,0IIItGGr   c                 J    d| j         d| j                                        S Nremove_rC   r   r    r$   r%   s    r   rx   z#RemoveIndex.migration_name_fragment  '     !%!6!6!6	8I8I8IJJr   N)r4   r5   r6   r   r"   r\   rj   ro   rT   ru   r   rx   r@   r   r   r   r     s        ''  H H H5 5 52 2 2	
 	
 	
H H H K K XK K Kr   r   c                        e Zd Zd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 )r   zRename an index.Nc                     |s|st          d          |r|rt          d          || _        || _        || _        || _        d S )NzHRenameIndex requires one of old_name and old_fields arguments to be set.z;RenameIndex.old_name and old_fields are mutually exclusive.)r   r   r   r   r   )r!   r   r   r   r   s        r   r"   zRenameIndex.__init__  sp     	
 	    	
 	M   %  $r   c                 4    | j                                         S r   r   r%   s    r   r   zRenameIndex.old_name_lower  r   r   c                 4    | 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   r   )r   r   r   r   r2   r6   rR   s     r   rT   zRenameIndex.deconstruct  sX    /
 
 = 	/!%F:? 	3#'?F< +R88r   c                 2   | j         rh|                    || j        t          j        | j         | j                             |                    || j        t          j        | j                    d S |	                    || j        | j
        | j                   d S )Nr   )r   rY  r   r   r   r   remove_model_optionsr$  r   rename_indexr   rZ   s      r   r\   zRenameIndex.state_forwards  s    ? 	OO%DO$-HHH  
 &&%".	     40$-    r   c           
      *   |j                             || j                  }|                     |j        j        |          sd S | j        r|j                             || j                  fd| j        D             }|                    |d          }t          |          dk    rCt          dt          |          dj
        j        dd                    |          d	          t          j        | j        |d
                   }n.|j        || j        f         }	|	                    | j                  }|j        | j        k    rd S |j        || j        f         }
|
                    | j                  }|                    |||           d S )Nc                 N    g | ]!}j                             |          j        "S r@   )rG   r   column)rB   r}   r2  s     r   r   z1RenameIndex.database_forwards.<locals>.<listcomp>  s:       =B
 **5118  r   T)column_namesr   r
   zFound wrong number (z) of indexes for (ra  z).r   r   )r_   r`   r   ra   rb   rc   r   _constraint_namesr  r   rG   r   rf  r   r   r   rq  r   r    r   r  )r!   r*   rf   rg   rh   ri   columnsmatching_index_name	old_indexrr  rt  	new_indexr2  s               @r   rj   zRenameIndex.database_forwards  s   ''	4?CC''(@(FNN 	F? 	J#229doNNJ   FJo  G #0"A"A #B # # &''1,, j /0000"(111		'****	   (+  II
  *0D<Q1QR(::4=III>T]**F!D4I)IJ"44T]CC	""5)Y?????r   c                    | j         rd S | j        | j        c| _        | _        | j        | j        c| _        | _        |                     ||||           | j        | j        c| _        | _        | j        | j        c| _        | _        d S r   )r   r   r   r   r   rj   r   s        r   ro   zRenameIndex.database_backwards1  s    ? 	F  	1T0 (,}dm$t}y-XNNN  	1T0 (,}dm$t}}}r   c                 x    | 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   r   r%   s    r   ru   zRenameIndex.describeD  sg    = 	WWW4?WWWW  T_  } 	
r   c                     | j         rd| j        d| j        S d| j        dd                    | j                  d| j        S r   )r   r   r   r   rf  r   r%   s    r   rx   z#RenameIndex.migration_name_fragmentN  sk    = 	O 	O%)%8%8%8$:M:MNN	O !!!HHT_%%%%
 	
r   c                    t          |t                    rO| j        |j        k    r?|j        r8| j        |j        k    r(t          | j        |j        | j        | j                  gS t                      
                    ||          S )N)r   r   r   )rJ   r   r   r   r   r   r   r   r   r-   r.   r0   s      r   r.   zRenameIndex.reduceX  s    y+..	%)CCC" D#y'??? O&/!]#	    ww~~i333r   )NN)r4   r5   r6   r   r"   r	   r   r   rT   r\   rj   ro   ru   r   rx   r.   r7   r8   s   @r   r   r     s        % % % % % % _% % % _%	9 	9 	9  $#@ #@ #@JD D D&
 
 
 
 
 X
4 4 4 4 4 4 4 4 4r   r   c                   \     e Zd ZdZd Zd Zd Zd Zd Zd Z	e
d             Z fd	Z xZS )
AddConstraintconstraintsc                 "    || _         || _        d S r   r   
constraint)r!   r   r  s      r   r"   zAddConstraint.__init__m  s    $$r   c                 H    |                     || j        | j                   d S r   )add_constraintr   r  rZ   s      r   r\   zAddConstraint.state_forwardsq  s%    Y(=tOOOOOr   c                     |j                             || j                  }|                     |j        j        |          r|                    || j                   d S d S r   )r_   r`   r   ra   rb   rc   r  r  re   s         r   rj   zAddConstraint.database_forwardst  sd    ''	4?CC##M$<$BEJJ 	A((@@@@@	A 	Ar   c                     |j                             || j                  }|                     |j        j        |          r|                    || j                   d S d S r   )r_   r`   r   ra   rb   rc   remove_constraintr  re   s         r   ro   z AddConstraint.database_backwardsy  sd    ''	4?CC##M$<$BEJJ 	D++E4?CCCCC	D 	Dr   c                 :    | j         j        g | j        | j        dfS )Nr  )r2   r4   r   r  r%   s    r   rT   zAddConstraint.deconstruct~  s+    N#"o"o 
 	
r   c                 0    d| j         j        d| j        S )NzCreate constraint rd  )r  r    r   r%   s    r   ru   zAddConstraint.describe  s#     O   OO
 	
r   c                 R    | j         d| j        j                                        S rh  )r   r  r    r$   r%   s    r   rx   z%AddConstraint.migration_name_fragment  s*    ///1E1K1K1M1M1MNNr   c                     t          |t                    r'| j        |j        k    r| j        j        |j        k    rg S t                                          ||          S r   )rJ   RemoveConstraintr   r  r    r-   r.   r0   s      r   r.   zAddConstraint.reduce  sV    y"233	%)CCC$	66Iww~~i333r   )r4   r5   r6   r   r"   r\   rj   ro   rT   ru   r   rx   r.   r7   r8   s   @r   r  r  j  s        K% % %P P PA A A
D D D

 
 

 
 
 O O XO4 4 4 4 4 4 4 4 4r   r  c                   L    e Zd ZdZd Zd Zd Zd Zd Zd Z	e
d             Zd	S )
r  r  c                 "    || _         || _        d S r   rl  rm  s      r   r"   zRemoveConstraint.__init__  rn  r   c                 H    |                     || j        | j                   d S r   )r  r   r    rZ   s      r   r\   zRemoveConstraint.state_forwards  s%    	4+@$)LLLLLr   c                    |j                             || j                  }|                     |j        j        |          rF|j        || j        f         }|                    | j	                  }|
                    ||           d S d S r   )r_   r`   r   ra   rb   rc   r   r   get_constraint_by_namer    r  )r!   r*   rf   rg   rh   ri   rr  r  s           r   rj   z"RemoveConstraint.database_forwards  s    ''	4?CC##M$<$BEJJ 	?)0D<Q1QR)@@KKJ++E:>>>>>	? 	?r   c                    |j                             || j                  }|                     |j        j        |          rF|j        || j        f         }|                    | j	                  }|
                    ||           d S d S r   )r_   r`   r   ra   rb   rc   r   r   r  r    r  )r!   r*   rf   rg   rh   ri   rt  r  s           r   ro   z#RemoveConstraint.database_backwards  s    ''	4?CC##M$<$BEJJ 	<%_Y8M-MNN'>>tyIIJ((
;;;;;	< 	<r   c                 :    | j         j        g | j        | j        dfS rv  )r2   r4   r   r    r%   s    r   rT   zRemoveConstraint.deconstruct  s+    N#"o	 
 	
r   c                 &    d| j         d| j        S )NzRemove constraint z from model rx  r%   s    r   ru   zRemoveConstraint.describe  s     7;yyy$//RRr   c                 J    d| j         d| j                                        S rz  r|  r%   s    r   rx   z(RemoveConstraint.migration_name_fragment  r}  r   N)r4   r5   r6   r   r"   r\   rj   ro   rT   ru   r   rx   r@   r   r   r  r    s        K  M M M? ? ?< < <
 
 
S S S K K XK K Kr   r  N)'	django.dbr   $django.db.migrations.operations.baser   django.db.migrations.stater   django.db.migrations.utilsr   r   django.db.models.optionsr   django.utils.functionalr	   r;   r   r   r   r   r   r   r   r:   r   r   r   r   r   r   r  r$  r   r   r   r   r   r   r   r  r  r@   r   r   <module>r     s6         : : : : : : 1 1 1 1 1 1 I I I I I I I I 7 7 7 7 7 7 3 3 3 3 3 3 R R R R R R R R R R R R R R  D D D D DY D D D(J4 J4 J4 J4 J4. J4 J4 J4Z
 -  -  -  -  -.  -  -  -FtF tF tF tF tF. tF tF tFn4 4 4 4 4> 4 4 402 02 02 02 02* 02 02 02f#8 #8 #8 #8 #81 #8 #8 #8L>
 >
 >
 >
 >
#7 >
 >
 >
B	0 	0 	0 	0 	06 	0 	0 	0	/ 	/ 	/ 	/ 	/5 	/ 	/ 	/AB AB AB AB AB2 AB AB ABH44 44 44 44 44, 44 44 44n5 5 5 5 5- 5 5 5:' ' ' ' 'Y ' ' ';4 ;4 ;4 ;4 ;4~ ;4 ;4 ;4|(K (K (K (K (K. (K (K (KVR4 R4 R4 R4 R4. R4 R4 R4j/4 /4 /4 /4 /4N /4 /4 /4d'K 'K 'K 'K 'K~ 'K 'K 'K 'K 'Kr   