
    P}bg~                     P   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$d,S )-    )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       y/home/e360mart.nyusoft.in/public_html/e360mart_env/lib/python3.11/site-packages/django/db/migrations/operations/models.py_check_for_duplicatesr      sj    I  )*JM##xxxX   	c     c                   @     e Zd Zd Zed             Zd Z f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                                          ||          p|                    | j        |           S r   )superreducer+   r    r!   	operationr*   	__class__s      r   r.   zModelOperation.reduce"   s;    GGNN9i00 A**49i@@@	
r   )	__name__
__module____qualname__r"   r	   r&   r+   r.   __classcell__r1   s   @r   r   r      sq           ! ! _!/ / /
 
 
 
 
 
 
 
 
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 )Nr9   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)hasattrrE   label_lower
isinstancestrr$   )r@   bases     r   rB   z'CreateModel.__init__.<locals>.<genexpr>7   so       (
 (
  '.dG&<&< <DJ""&tS11;DJJLLLt(
 (
 (
 (
 (
 (
r   r;   c              3       K   | ]	\  }}|V  
d S r   r>   r?   s      r   rB   z'CreateModel.__init__.<locals>.<genexpr><   s&      *M*MGD!4*M*M*M*M*M*Mr   )	r9   r:   r   ModelrC   r;   r-   r"   r   )r!   r    r9   r:   rC   r;   r1   s         r   r"   zCreateModel.__init__.   s    }"-v|o
 B 	h(I(IT[(I(I(IJJJg (
 (
 
(
 (
 (
 	 	 	
 	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    r9   r:   rC   objectsr;   )
r    r9   r:   rC   r   rL   r;   Managerr1   r4   r!   kwargss     r   deconstructzCreateModel.deconstruct>   s    Ik
 
 < 	- $F9: 	)$*77"jF7O= 	/T]	6>;K;K/L.MMM!%F:N'
 	
r   c                     |                     t          || j        t          | j                  t          | j                  t          | j                  t          | j	                                       d S r   )
	add_modelr   r    listr9   dictr:   tuplerC   r;   r!   r*   states      r   state_forwardszCreateModel.state_forwardsO   sj    
I$*
 
 	 	 	 	 	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_forwardsY   ]    ''	49==##M$<$BEJJ 	.&&u-----	. 	.r   c                     |j                             || j                  }|                     |j        j        |          r|                    |           d S d S r   r]   r^   r    r_   r`   ra   delete_modelrc   s         r   database_backwardszCreateModel.database_backwards^   ]    )))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.describec   s8     26,2B2B7E2R2R&ZhhXZ&Z&Z\`\e\effr   c                     | j         S r   r&   r%   s    r   migration_name_fragmentz#CreateModel.migration_name_fragmentf   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&   rC   r   rL   rH   rJ   	ModelBaserI   r   r9   r   )r!   r    r*   r&   reference_model_tuplerJ   _namefields           r   r+   zCreateModel.references_modelj   s    ZZ\\
((4 "+J 7J 	 	DFL((Zv{?TVY>Z-[-[($T9559NNNtt !K 	 	LE5DO <eEZ[[ 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                     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*                    rE| j        j        k    r4t          t.                    r>t          | j        | j	        j        j        fgz   | j        | j
        | j                  gS t          t2                    r:t          | j        fd| j	        D             | j        | j
        | j                  gS t          t4                    r| j                                        }dD ]O}|                    |d           }|r5t9          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 tC                      "                    |          S )Nrp   F)r9   r:   rC   r;   order_with_respect_toc                 B    g | ]\  }}||j         k    rj        n|fS r>   )r    r{   r@   nvr0   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   ru   r@   fr0   s     r   rB   z/CreateModel.reduce.<locals>.<genexpr>.<genexpr>   s0      !Q!QqI<P7P7P!7P7P7P7P!Q!Qr   NrW   r@   r9   r0   s     r   rB   z%CreateModel.reduce.<locals>.<genexpr>   sQ       3 3V\E!Q!Q!Q!QV!Q!Q!QQQ3 3 3 3 3 3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   rB   z/CreateModel.reduce.<locals>.<setcomp>.<genexpr>   s:      !g!g[\Y=O8O8O)"4"4UV!g!g!g!g!g!gr   r   r   s     r   	<setcomp>z%CreateModel.reduce.<locals>.<setcomp>   sG     0 0 0 & "!g!g!g!g`f!g!g!ggg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   )#rH   DeleteModelr&   r:   rr   RenameModelold_name_lowerr8   r   r9   rC   r;   AlterModelOptionsALTER_OPTION_KEYSpopr    AlterTogetherOptionOperationoption_nameoption_valueAlterOrderWithRespectTor}   r   model_name_lowerr   r{   r   r   copyr   filterboolr   r   r-   r.   )	r!   r0   r*   r:   keyr   optionr}   r1   s	    `      r   r.   zCreateModel.reduce|   sS   y+.. y	9#777L$$We44 8I	;// u	DOyG_4_4_&; L*!]    	#455 k	$/YMa:a:a;;):;G 2 + +i///KKT***I;#*!]    	#?@@ ]	T_XaXlElElI;_t|_	0EyG]/^_*!]    	#:;; S	S\Sg@g@gI;ft|f-DiFeff*!]    	>22 I	t)Jd7d7d)X.. H	#{y~y.O-PP $"j!%    Iz22 >	       (,      !%"j!%	 	 	  I{33 1,++--#H : :K$[[d;;F :!$VD 3 3 3 3`f3 3 3 & & " " " :39GK0(/4K(L(L%(I,@@@ 78	       (,     
 !("j!%
 
 
  I{33 ,++--#H  K$[[55F 0 0 0 0*00 0 0, )04K(L(L%(I,>>>7@7IG34	       (,      !("j!%	 	 	  ww~~i333r   )NNN)r2   r3   r4   __doc__serialization_expand_argsr"   rR   rZ   rh   rm   rs   propertyrv   r+   r.   r5   r6   s   @r   r8   r8   )   s        !! A A AO O O O O O 
 
 
"  . . .
. . .
g g g   X  ${4 {4 {4 {4 {4 {4 {4 {4 {4r   r8   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    r1   r4   rP   s     r   rR   zDeleteModel.deconstruct   s*    DI
 N'
 	
r   c                 <    |                     || j                   d S r   )remove_modelr&   rX   s      r   rZ   zDeleteModel.state_forwards  s     9do66666r   c                     |j                             || j                  }|                     |j        j        |          r|                    |           d S d S r   rk   rc   s         r   rh   zDeleteModel.database_forwards
  rn   r   c                     |j                             || j                  }|                     |j        j        |          r|                    |           d S d S r   r\   rc   s         r   rm   zDeleteModel.database_backwards  ri   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   rs   zDeleteModel.describe  s     49,,r   c                     d| j         z  S )Nz	delete_%sru   r%   s    r   rv   z#DeleteModel.migration_name_fragment  s    T_,,r   N)r2   r3   r4   r   rR   rZ   rh   rm   r+   rs   r   rv   r>   r   r   r   r      s        
 
 
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   r1   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   r1   r4   rP   s     r   rR   zRenameModel.deconstruct1  s2    
 

 N'
 	
r   c                 H    |                     || j        | j                   d S r   )rename_modelr   r   rX   s      r   rZ   zRenameModel.state_forwards<  s$    9dmT]CCCCCr   c                 <   |j                             || j                  }|                     |j        j        |          r|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 ]\  }}|j        |j        k    s|j        j        j        j        s,|j        j        }|j        j        }|                    ||j        j	        |j        j	                   |                    ||j                            |j        j                  |j                            |j        j                             d S d S r   )r]   r^   r   r_   r`   ra   r   alter_db_tablerE   db_tablerelated_objectsrelated_modelr   r*   
model_name	get_fieldr{   r    alter_fieldziplocal_many_to_manyrg   remote_fieldthroughauto_created)r!   r*   rd   re   rf   	new_model	old_modelrelated_objectrg   related_keyto_fieldr9   	old_field	new_fieldold_m2m_modelnew_m2m_models                   r   rh   zRenameModel.database_forwards?  s4   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=2 		."6";<<  ))"(    ;Y_=_``F*0  &I?i&===YE[EcEiEv= ) 6 > ) 6 >,,!!'0!'0   ))!!'11)/2LMM!'11)/2LMM   W/	 /	: r   c                     | j         | j        c| _        | _         | j        | j        c| _        | _        |                     ||||           | j         | j        c| _        | _         | j        | j        c| _        | _        d S r   )r   r   r   r   rh   r!   r*   rd   re   rf   s        r   rm   zRenameModel.database_backwardsr  sx    373FH[0T0'+}dm$t}y-XNNN373FH[0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{  s2    JJLLD// 0JJLLD//	
r   c                 &    d| j         d| j        S )NzRename model  to r   r%   s    r   rs   zRenameModel.describe  s     *.---GGr   c                 &    d| j         d| j        S )Nrename_rA   )r   r   r%   s    r   rv   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   )
rH   r   r   r   r   r   r-   r   r.   r+   r/   s      r   r.   zRenameModel.reduce  s    y+.. 	#y'???M&   .$''..y)DD E**4=)DDD	
r   )r2   r3   r4   r   r"   r	   r   r   rR   rZ   rh   rm   r+   rs   r   rv   r.   r5   r6   s   @r   r   r   !  s       # # # # #
 % % _% % % _%	
 	
 	
D D D1 1 1fD D D
 
 
H H H K K XK
 
 
 
 
 
 
 
 
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   )rH   r1   r   r&   r-   r.   r/   s      r   r.   zModelOptionOperation.reduce  sL    i$.+!>?? 	DOW`WkDkDk;ww~~i333r   )r2   r3   r4   r.   r5   r6   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   r1   s      r   r"   zAlterModelTable.__init__  s(    
r   c                 >    | j         | j        d}| j        j        g |fS )Nr    r   )r    r   r1   r4   rP   s     r   rR   zAlterModelTable.deconstruct  s2    IZ
 

 N'
 	
r   c                 L    |                     || j        d| j        i           d S )Nr   )alter_model_optionsr&   r   rX   s      r   rZ   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    r_   r`   ra   r   rE   r   r   r   r   r   r   )	r!   r*   rd   re   rf   r   r   r   r   s	            r   rh   z!AlterModelTable.database_forwards  s   M++ItyAA	##M$<$BINN 	"11)TYGGI((((   +.io.PR[RaRt*u*u  &I)17D !00!.6!.6<E!.6<E  	 	 r   c                 2    |                      ||||          S r   rh   r   s        r   rm   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   rs   zAlterModelTable.describe  s*     III*0DJJkA
 	
r   c                     d| j         z  S )Nzalter_%s_tableru   r%   s    r   rv   z'AlterModelTable.migration_name_fragment  s    $/11r   )r2   r3   r4   r   r"   rR   rZ   rh   rm   rs   r   rv   r5   r6   s   @r   r   r     s        !!    	
 	
 	
X X X  $V V V
 
 
 2 2 X2 2 2 2 2r   r   c                   r     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 xZS )r   Nc                     |rt          t          |                    }t          | | j        |           t	                                          |           d S r   )r   r   setattrr   r-   r"   )r!   r    r   r1   s      r   r"   z%AlterTogetherOptionOperation.__init__  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   r1   r4   rP   s     r   rR   z(AlterTogetherOptionOperation.deconstruct  s5    DId/

 N'
 	
r   c                 V    |                     || j        | j        | j        i           d S r   )r   r&   r   r   rX   s      r   rZ   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    r_   r`   ra   r   r   rE   r   )r!   r*   rd   re   rf   r   r   alter_togethers           r   rh   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   rm   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>   )r@   r9   r    s     r   rB   z@AlterTogetherOptionOperation.references_field.<locals>.<genexpr>  s'      EETV^EEEEEEr   )r+   r   anyr!   r   r    r*   s     ` r   references_fieldz-AlterTogetherOptionOperation.references_field  sR    !!*i88 %% FEEEE43DEEEEE		
r   c                 V    d| j         d| j        dt          | j        pd          dS )NzAlter z for z (rq   z constraint(s)))r   r    lenr   r%   s    r   rs   z%AlterTogetherOptionOperation.describe  s9     7;7G7G7GTWX\XiXomoTpTpTpTpqqr   c                 &    d| j         d| j        S )Nalter_rA   )r&   r   r%   s    r   rv   z4AlterTogetherOptionOperation.migration_name_fragment  s      $1A1ABBr   )r2   r3   r4   r   r"   r	   r   rR   rZ   rh   rm   r   rs   r   rv   r5   r6   s   @r   r   r     s        K     / / _/	
 	
 	

 
 
	 	 	V V V
 
 
r r r C C XC C C 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                 L    t                                          ||           d S r   r-   r"   )r!   r    r   r1   s      r   r"   zAlterUniqueTogether.__init__  s#    /////r   r2   r3   r4   r   r   r"   r5   r6   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   r1   s      r   r"   zAlterIndexTogether.__init__%  s#    ~.....r   r   r6   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}   r1   s      r   r"   z AlterOrderWithRespectTo.__init__.  s)    %:"r   c                 >    | j         | j        d}| j        j        g |fS )Nr    r}   )r    r}   r1   r4   rP   s     r   rR   z#AlterOrderWithRespectTo.deconstruct2  s3    I%)%?
 

 N'
 	
r   c                 V    |                     || j        | j        | j        i           d S r   )r   r&   r   r}   rX   s      r   rZ   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    r_   r`   ra   rE   r}   remove_fieldr   has_defaultdefault	add_field)r!   r*   rd   re   rf   to_model
from_modelr{   s           r   rh   z)AlterOrderWithRespectTo.database_forwardsD  s,   =**9di@@##M$<$BHMM 	#229diHHJ5 hn>b **:z7G7Q7QRZ7[7[\\\\\ 5 j>N>d  00::((** &$%EM''    	 	   r   c                 6    |                      ||||           d S r   r   r   s        r   rm   z*AlterOrderWithRespectTo.database_backwardsV  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_fieldY  s:    !!*i88 *d2 322		
r   c                 &    d| j         d| j        S )NzSet order_with_respect_to on r   r  r%   s    r   rs   z AlterOrderWithRespectTo.describeb  s     :>)))TE_E_``r   c                     d| j         z  S )Nzalter_%s_order_with_respect_toru   r%   s    r   rv   z/AlterOrderWithRespectTo.migration_name_fragmente  s    /$/AAr   )r2   r3   r4   r   r   r"   rR   rZ   rh   rm   r   rs   r   rv   r5   r6   s   @r   r   r   )  s        CC)K    	
 	
 	

 
 
  $O O O
 
 
a a a 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:   r1   s      r   r"   zAlterModelOptions.__init__  s(    r   c                 >    | j         | j        d}| j        j        g |fS )N)r    r:   )r    r:   r1   r4   rP   s     r   rR   zAlterModelOptions.deconstruct  s2    I|
 

 N'
 	
r   c                 T    |                     || j        | j        | j                   d S r   )r   r&   r:   r   rX   s      r   rZ   z AlterModelOptions.state_forwards  s7    !!OL"		
 	
 	
 	
 	
r   c                     d S r   r>   r   s        r   rh   z#AlterModelOptions.database_forwards      r   c                     d S r   r>   r   s        r   rm   z$AlterModelOptions.database_backwards  r$  r   c                     d| j         z  S )NzChange Meta options on %sr   r%   s    r   rs   zAlterModelOptions.describe  s    *TY66r   c                     d| j         z  S )Nzalter_%s_optionsru   r%   s    r   rv   z)AlterModelOptions.migration_name_fragment  s    !DO33r   )r2   r3   r4   r   r   r"   rR   rZ   rh   rm   rs   r   rv   r5   r6   s   @r   r   r   j  s               	
 	
 	

 
 
    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 )
AlterModelManagerszAlter the model's managers.r;   c                 X    || _         t                                          |           d S r   )r;   r-   r"   )r!   r    r;   r1   s      r   r"   zAlterModelManagers.__init__  s(     r   c                 8    | j         j        | j        | j        gi fS r   )r1   r4   r    r;   r%   s    r   rR   zAlterModelManagers.deconstruct  s#    N'Y&
 	
r   c                 H    |                     || j        | j                   d S r   )alter_model_managersr&   r;   rX   s      r   rZ   z!AlterModelManagers.state_forwards  s$    ""9dot}MMMMMr   c                     d S r   r>   r   s        r   rh   z$AlterModelManagers.database_forwards  r$  r   c                     d S r   r>   r   s        r   rm   z%AlterModelManagers.database_backwards  r$  r   c                     d| j         z  S )NzChange managers on %sr   r%   s    r   rs   zAlterModelManagers.describe  s    &22r   c                     d| j         z  S )Nzalter_%s_managersru   r%   s    r   rv   z*AlterModelManagers.migration_name_fragment  s    "T_44r   )r2   r3   r4   r   r   r"   rR   rZ   rh   rm   rs   r   rv   r5   r6   s   @r   r)  r)    s        %%!+    
 
 
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 )IndexOperationindexesc                 4    | j                                         S r   )r   r$   r%   s    r   r   zIndexOperation.model_name_lower  s    $$&&&r   N)r2   r3   r4   r   r	   r   r>   r   r   r3  r3    s2        K' ' _' ' 'r   r3  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 )
AddIndexz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   index)r!   r   r9  s      r   r"   zAddIndex.__init__  s?    $z 	1389   


r   c                 H    |                     || j        | j                   d S r   )	add_indexr   r9  rX   s      r   rZ   zAddIndex.state_forwards  s#    	4#8$*EEEEEr   c                     |j                             || j                  }|                     |j        j        |          r|                    || j                   d S d S r   )r]   r^   r   r_   r`   ra   r;  r9  rc   s         r   rh   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   r_   r`   ra   remove_indexr9  rc   s         r   rm   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   r9  )r   r9  r1   r4   rP   s     r   rR   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 z on z, c                 ,    g | ]}t          |          S r>   )rI   )r@   
expressions     r   r   z%AddIndex.describe.<locals>.<listcomp>  s    TTTz3z??TTTr   
 on model z on field(s) z
 of model )r9  expressionsr    joinr   r9   r%   s    r   rs   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 NrA   )r   r9  r    r$   r%   s    r   rv   z AddIndex.migration_name_fragment  s)    ///1F1F1H1H1HIIr   Nr2   r3   r4   r   r"   rZ   rh   rm   rR   rs   r   rv   r>   r   r   r7  r7    s        ""  F F F7 7 7
: : :
	
 	
 	

 
 
 J J XJ J Jr   r7  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 )
RemoveIndexz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    rX   s      r   rZ   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   r_   r`   ra   r   r   get_index_by_namer    r>  )r!   r*   rd   re   rf   rg   from_model_stater9  s           r   rh   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   r_   r`   ra   r   r   rQ  r    r;  )r!   r*   rd   re   rf   rg   to_model_stater9  s           r   rm   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    r1   r4   rP   s     r   rR   zRemoveIndex.deconstruct  s2    /I
 

 N'
 	
r   c                 &    d| j         d| j        S )NzRemove index z from r    r   r%   s    r   rs   zRemoveIndex.describe'  s     ,0IIItGGr   c                 J    d| j         d| j                                        S Nremove_rA   r   r    r$   r%   s    r   rv   z#RemoveIndex.migration_name_fragment*  '     !%!6!6!6	8I8I8IJJr   NrH  r>   r   r   rJ  rJ    s        ''  H H H5 5 52 2 2	
 	
 	
H H H K K XK K Kr   rJ  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 )
AddConstraintconstraintsc                 "    || _         || _        d S r   r   
constraint)r!   r   rc  s      r   r"   zAddConstraint.__init__2  s    $$r   c                 H    |                     || j        | j                   d S r   )add_constraintr   rc  rX   s      r   rZ   zAddConstraint.state_forwards6  s%    Y(=tOOOOOr   c                     |j                             || j                  }|                     |j        j        |          r|                    || j                   d S d S r   )r]   r^   r   r_   r`   ra   re  rc  rc   s         r   rh   zAddConstraint.database_forwards9  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   r_   r`   ra   remove_constraintrc  rc   s         r   rm   z AddConstraint.database_backwards>  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 )Nrb  )r1   r2   r   rc  r%   s    r   rR   zAddConstraint.deconstructC  s*    ~&//-
 -
 
 	
r   c                 0    d| j         j        d| j        S )NzCreate constraint rC  )rc  r    r   r%   s    r   rs   zAddConstraint.describeI  s     59_5I5I5I4??[[r   c                 R    | j         d| j        j                                        S rG  )r   rc  r    r$   r%   s    r   rv   z%AddConstraint.migration_name_fragmentL  s*    ///1E1K1K1M1M1MNNr   Nr2   r3   r4   r   r"   rZ   rh   rm   rR   rs   r   rv   r>   r   r   r_  r_  /  s        K% % %P P PA A A
D D D

 
 
\ \ \ O O XO O Or   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 )
RemoveConstraintr`  c                 "    || _         || _        d S r   rL  rM  s      r   r"   zRemoveConstraint.__init__T  rN  r   c                 H    |                     || j        | j                   d S r   )rh  r   r    rX   s      r   rZ   zRemoveConstraint.state_forwardsX  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   r_   r`   ra   r   r   get_constraint_by_namer    rh  )r!   r*   rd   re   rf   rg   rR  rc  s           r   rh   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   r_   r`   ra   r   r   rr  r    re  )r!   r*   rd   re   rf   rg   rT  rc  s           r   rm   z#RemoveConstraint.database_backwardsb  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  )r1   r2   r   r    r%   s    r   rR   zRemoveConstraint.deconstructi  s*    ~&/I-
 -
 
 	
r   c                 &    d| j         d| j        S )NzRemove constraint z from model rX  r%   s    r   rs   zRemoveConstraint.describeo  s     7;yyy$//RRr   c                 J    d| j         d| j                                        S rZ  r\  r%   s    r   rv   z(RemoveConstraint.migration_name_fragmentr  r]  r   Nrl  r>   r   r   rn  rn  Q  s        K  M M M? ? ?< < <
 
 
S S S K K XK K Kr   rn  N)%	django.dbr   $django.db.migrations.operations.baser   django.db.migrations.stater   django.db.migrations.utilsr   r   django.db.models.optionsr   django.utils.functionalr	   r9   r   r   r   r   r   r   r   r8   r   r   r   r   r   r   r  r   r   r)  r3  r7  rJ  r_  rn  r>   r   r   <module>r}     s         : : : : : : 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             
  
 
 
 
 
Y 
 
 
$N4 N4 N4 N4 N4. N4 N4 N4b$- $- $- $- $-. $- $- $-Nu
 u
 u
 u
 u
. u
 u
 u
p4 4 4 4 4> 4 4 422 22 22 22 22* 22 22 22j;C ;C ;C ;C ;C#7 ;C ;C ;C|0 0 0 0 06 0 0 0/ / / / /5 / / />B >B >B >B >B2 >B >B >BB84 84 84 84 84, 84 84 84v5 5 5 5 5- 5 5 5B' ' ' ' 'Y ' ' '3J 3J 3J 3J 3J~ 3J 3J 3Jl(K (K (K (K (K. (K (K (KVO O O O ON O O OD#K #K #K #K #K~ #K #K #K #K #Kr   