
    h:                        d dl mZ d dlmZ d dl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dl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%y,)-    )models)	Operation)
ModelState)normalize_together)cached_property   )AddField
AlterFieldFieldOperationRemoveFieldRenameField)field_referencesget_referencesresolve_relationc                 t    t               }|D ])  }||v rt        d|d| d      |j                  |       + y )NzFound duplicate value z in CreateModel z
 argument.)set
ValueErroradd)arg_nameobjs	used_valsvals       i/var/www/html/ranktracker/api/venv/lib/python3.12/site-packages/django/db/migrations/operations/models.py_check_for_duplicatesr      sC    I )JMxX  	c    c                   :     e Zd Zd Zed        Zd Z fdZ xZS )ModelOperationc                     || _         y Nname)selfr!   s     r   __init__zModelOperation.__init__   s	    	r   c                 6    | j                   j                         S r   )r!   lowerr"   s    r   
name_lowerzModelOperation.name_lower   s    yy  r   c                 <    |j                         | j                  k(  S r   )r%   r'   r"   r!   	app_labels      r   references_modelzModelOperation.references_model   s    zz|t..r   c                 b    t         |   ||      xs |j                  | j                  |       S r   )superreducer+   r!   r"   	operationr*   	__class__s      r   r.   zModelOperation.reduce"   s3    GN9i0 A**499i@@	
r   )	__name__
__module____qualname__r#   r   r'   r+   r.   __classcell__r1   s   @r   r   r      s+     ! !/
 
r   r   c                   Z     e Zd ZdZg dZd fd	Zd Zd Zd Zd Z	d Z
d	 Z fd
Z xZS )CreateModelzCreate a model's table.)fieldsoptionsmanagersc                 @   || _         |xs i | _        |xs t        j                  f| _        |xs g | _        t        |   |       t        dd | j                   D               t        dd | j                  D               t        dd | j
                  D               y )Nr9   c              3   &   K   | ]	  \  }}|  y wr    .0r!   _s      r   	<genexpr>z'CreateModel.__init__.<locals>.<genexpr>6   s     (I'$(I   basesc              3      K   | ]H  }t        |d       r|j                  j                  n!t        |t              r|j                         n| J yw)_metaN)hasattrrF   label_lower
isinstancestrr%   )r@   bases     r   rB   z'CreateModel.__init__.<locals>.<genexpr>7   sF      (
  '.dG&<DJJ""&tS1DJJLt<(
s   AAr;   c              3   &   K   | ]	  \  }}|  y wr   r>   r?   s      r   rB   z'CreateModel.__init__.<locals>.<genexpr><   s     *MGD!4*MrC   )	r9   r:   r   ModelrD   r;   r-   r#   r   )r"   r!   r9   r:   rD   r;   r1   s         r   r#   zCreateModel.__init__.   s    }"-v||o
 B 	h(IT[[(IJg (
 

(
 	
 	j*Mt}}*MNr   c                    | j                   | j                  d}| j                  r| j                  |d<   | j                  r-| j                  t        j
                  fk7  r| j                  |d<   | j                  r3| j                  dt	        j                         fgk7  r| j                  |d<   | j                  j                  g |fS )N)r!   r9   r:   rD   objectsr;   )
r!   r9   r:   rD   r   rM   r;   Managerr1   r4   r"   kwargss     r   deconstructzCreateModel.deconstruct>   s    IIkk
 << $F9::$**7"jjF7O==T]]	6>>;K/L.MM!%F:NN''
 	
r   c                     |j                  t        || j                  t        | j                        t        | j                        t        | j                        t        | j                                     y r   )
	add_modelr   r!   listr9   dictr:   tuplerD   r;   r"   r*   states      r   state_forwardszCreateModel.state_forwardsO   sO    
II$**
 	r   c                     |j                   j                  || j                        }| j                  |j                  j
                  |      r|j                  |       y y 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   L    ''	499=##M$<$<$B$BEJ&&u- Kr   c                     |j                   j                  || j                        }| j                  |j                  j
                  |      r|j                  |       y y r   r^   r_   r!   r`   ra   rb   delete_modelrd   s         r   database_backwardszCreateModel.database_backwards^   L    )))TYY?##M$<$<$B$BEJ&&u- Kr   c                 b    d| j                   j                  dd      rdndd| j                  S )NzCreate proxyFzproxy  zmodel )r:   getr!   r&   s    r   describezCreateModel.describec   s-    26,,2B2B7E2RhXZ&Z\`\e\effr   c                 j   |j                         }|| j                  k(  ry||f}| j                  D ]Q  }|t        j                  ust        |t        j                  j                  t        f      sAt        ||      |k(  sQ y | j                  D ]   \  }}t        || j                  f||      s  y y)NTF)r%   r'   rD   r   rM   rI   rK   	ModelBaserJ   r   r9   r   )r"   r!   r*   r'   reference_model_tuplerK   _namefields           r   r+   zCreateModel.references_modelf   s    ZZ\
( "+J 7JJ 	DFLL(Zv{{?T?TVY>Z-[$T959NN	 !KK 	LE5DOO <eEZ[	 r   c           
      
   t        t              r7| j                  j                  k(  r| j                  j	                  dd      sg S t        t
              r\| j                  j                  k(  rCt        j                  | j                  | j                  | j                  | j                        gS t        t              rj| j                  j                  k(  rQt        | j                  | j                  i | j                  j                  | j                  | j                        gS t        t              rv| j                  j                  k(  r]t        | j                  | j                  i | j                  j                  j                   i| j                  | j                        gS t        t"              rl| j                  j                  k(  rSt        | j                  | j                  i | j                  dj$                  i| j                  | j                        gS t        t&              r
| j                  j(                  k(  rt        t*              r]t        | j                  | j                  j                  j,                  fgz   | j                  | j                  | j                        gS t        t.              rst        | j                  | j                  D cg c]$  \  }}||j                  k(  rj,                  n|f& c}}| j                  | j                  | j                        gS t        t0              r| j                  j3                         }dD ]A  }|j5                  |d       }|st7        t9        t:        fd|D                    }|s=|||<   C |j	                  d      }|j                  k(  r|d= t        | j                  | j                  D cg c]&  \  }}|j=                         j                  k7  r||f( c}}|| j                  | j                        gS t        t>              r| j                  j3                         }dD ];  }|j	                  |      }|s|D 	ch c]  }	tA        fd|	D               c}	||<   = |j	                  d      }|jB                  k(  rj                  |d<   t        | j                  | j                  D cg c]$  \  }}|jB                  k(  rj                  n||f& c}}|| j                  | j                        gS tD        
|   |      S c c}}w c c}}w c c}	w c c}}w )Nrq   F)r9   r:   rD   r;   order_with_respect_to)unique_togetherindex_togetherc              3   F   K   | ]  }t        fd |D                yw)c              3   B   K   | ]  }|j                   k7  s|  y wr   )r'   r@   fr0   s     r   rB   z/CreateModel.reduce.<locals>.<genexpr>.<genexpr>   s     !QqI<P<P7P!!Qs   N)rX   )r@   r9   r0   s     r   rB   z%CreateModel.reduce.<locals>.<genexpr>   s!      3V\E!QV!QQ3s   !c              3   X   K   | ]!  }|j                   k(  rj                  n| # y wr   old_namenew_namer   s     r   rB   z%CreateModel.reduce.<locals>.<genexpr>   s+     !g[\Y=O=O8O)"4"4UV"V!gs   '*)$rI   DeleteModelr'   r:   rs   RenameModelold_name_lowerr8   r   r9   rD   r;   AlterModelOptionsr!   AlterTogetherOptionOperationoption_nameoption_valueAlterOrderWithRespectTor{   r   model_name_lowerr	   ry   r
   r   copypopr   filterboolr%   r   rX   r   r-   r.   )r"   r0   r*   nvr:   r   optionr{   r9   r1   s    `        r   r.   zCreateModel.reducex   s   y+.9#7#77LL$$We4I	;/DOOyG_G_4_&&;; LL**!]]  	#45$//YMaMa:aII;;At||Ay/@/@A**!]]  	#?@T__XaXlXlElII;;_t||_	0E0EyG]G]/^_**!]]  	#:;S\SgSg@gII;;ft||f-DiFeFef**!]]  	>2t)JdJd7d)X.		#{{y~~y.O-PP $"jj!%  Iz2		 )-  $1 1	3F	AN  !%"jj!%	  I{3,,++-#H :K$[[d;F!$VD 3`f3 & " "39GK0: )04K(L%(I,@,@@ 78		 )-  $1 wwyI,@,@@ F 
 !("jj!%
  I{3,,++-#H K$[[5F +10 & "!g`f!gg0, )04K(L%(I,>,>>7@7I7IG34		 )-  $1 45	8J8J3JY//PQSTU  !("jj!%	  w~i33w 2 0 s   9)U?+U#U))U.)NNN)r2   r3   r4   __doc__serialization_expand_argsr#   rS   r[   ri   rn   rt   r+   r.   r5   r6   s   @r   r8   r8   )   s=    ! AO 
".
.
g$w4 w4r   r8   c                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)	r   zDrop a model's table.c                 P    d| j                   i}| j                  j                  g |fS Nr!   )r!   r1   r4   rQ   s     r   rS   zDeleteModel.deconstruct   s1    DII
 NN''
 	
r   c                 <    |j                  || j                         y r   )remove_modelr'   rY   s      r   r[   zDeleteModel.state_forwards   s    9doo6r   c                     |j                   j                  || j                        }| j                  |j                  j
                  |      r|j                  |       y y r   rl   rd   s         r   ri   zDeleteModel.database_forwards  ro   r   c                     |j                   j                  || j                        }| j                  |j                  j
                  |      r|j                  |       y y r   r]   rd   s         r   rn   zDeleteModel.database_backwards  rj   r   c                      y)NTr>   r)   s      r   r+   zDeleteModel.references_model  s     r   c                      d| j                   z  S )NzDelete model %sr    r&   s    r   rt   zDeleteModel.describe  s     499,,r   N)
r2   r3   r4   r   rS   r[   ri   rn   r+   rt   r>   r   r   r   r      s#    
7.
.

-r   r   c                   p     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 fdZ xZS )r   zRename a model.c                 @    || _         || _        t        |   |       y r   )r   r   r-   r#   )r"   r   r   r1   s      r   r#   zRenameModel.__init__  s      "r   c                 6    | j                   j                         S r   )r   r%   r&   s    r   r   zRenameModel.old_name_lower      }}""$$r   c                 6    | j                   j                         S r   )r   r%   r&   s    r   new_name_lowerzRenameModel.new_name_lower!  r   r   c                 f    | j                   | j                  d}| j                  j                  g |fS )Nr   )r   r   r1   r4   rQ   s     r   rS   zRenameModel.deconstruct%  s6    

 NN''
 	
r   c                    |j                   || j                  f   j                         }| j                  |_        ||j                   || j
                  f<   || j                  f}|d| j                  }t               }t        ||      D ]  \  }}}	}
d }|
j                  r!|	j                         }||j                  _
        |
j                  r#||	j                         }||j                  _        |si||j                  |<   |j                  |j                  |j                  f        |j!                  |d       |j#                  || j                         |j%                  || j
                  d       y )N.Tdelay)r   r   cloner   r!   r   r   r   toremote_fieldrh   throughr9   r   r*   r'   reload_modelsr   reload_model)r"   r*   rZ   renamed_modelold_model_tuplenew_remote_model	to_reloadmodel_stater!   ry   	referencechanged_fields               r   r[   zRenameModel.state_forwards0  sS   Y0C0C%CDJJL!]]7DY 3 334$d&9&9:&/?E	3A%3Y 	O/Kui M|| %3C**0   ($)KKMM5E**2+8""4({44k6L6LMN	O 	IT29d&9&9:9d&9&9Fr   c                    |j                   j                  || j                        }| j                  |j                  j
                  |      r|j                   j                  || j                        }|j                  ||j                  j                  |j                  j                         |j                  j                  D ]  }|j                  |k(  r|}|| j                  f}	nL|j                  }|j                  j                  j                  |j                  j                  j                  f}	 |j                   j                  |	 j                  j                  |j                   j"                        }
|j%                  ||j                   |
        t'        |j                  j(                  |j                  j(                        }|D ]  \  }}|j*                  |j                  k(  s*|j,                  j.                  j                  j0                  sK|j,                  j.                  }|j,                  j.                  }|j                  ||j                  j                  |j                  j                         |j%                  ||j                  j                  |j                  j                        |j                  j                  |j                  j                               ! y y r   )r^   r_   r   r`   ra   rb   r   alter_db_tablerF   db_tablerelated_objectsrelated_modelr   r*   
model_name	get_fieldry   r!   alter_fieldziplocal_many_to_manyrh   r   r   auto_created)r"   r*   re   rf   rg   	new_model	old_modelrelated_objectrh   related_keyto_fieldr9   	old_field	new_fieldold_m2m_modelnew_m2m_models                   r   ri   zRenameModel.database_forwardsK  sY   MM++It}}E	##M$<$<$B$BIN"11)T]]KI(((((( #,//"A"A !//9<%E#,d.A.A"BK*88E&44::DD&44::EE#K 38==22 %		."6"6";";<  ))"((& ;;Y__=_=_`F*0 &I??i&=&==YE[E[EcEcEiEiEvEv ) 6 6 > > ) 6 6 > >,,!!''00!''00 ))!!''11)//2L2LM!''11)//2L2LM; Or   c                 D   | j                   | j                  c| _        | _         | j                  | j                  c| _        | _        | j	                  ||||       | j                   | j                  c| _        | _         | j                  | j                  c| _        | _        y r   )r   r   r   r   ri   r"   r*   re   rf   rg   s        r   rn   zRenameModel.database_backwards~  s    373F3FH[H[0T0'+}}dmm$t}y-XN373F3FH[H[0T0'+}}dmm$t}r   c                 z    |j                         | j                  k(  xs |j                         | j                  k(  S r   )r%   r   r   r)   s      r   r+   zRenameModel.references_model  s4    JJLD/// 0JJLD///	
r   c                 :    d| j                   d| j                  S )NzRename model  to r   r&   s    r   rt   zRenameModel.describe  s    *.--GGr   c                     t        |t              r:| j                  |j                  k(  r!t        | j                  |j
                        gS t        t        | #  ||      xs |j                  | j
                  |       S r   )
rI   r   r   r   r   r   r-   r   r.   r+   r/   s      r   r.   zRenameModel.reduce  sx    y+.##y'?'??MM&&  .$.y)D E**4==)DD	
r   )r2   r3   r4   r   r#   r   r   r   rS   r[   ri   rn   r+   rt   r.   r5   r6   s   @r   r   r     s_    #
 % % % %	
G61fD
H
 
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   )rI   r1   r   r'   r-   r.   r/   s      r   r.   zModelOptionOperation.reduce  sA    i$..+!>?DOOW`WkWkDk;w~i33r   )r2   r3   r4   r.   r5   r6   s   @r   r   r     s    4 4r   r   c                   @     e Zd ZdZ fdZd Zd Zd Zd Zd Z	 xZ
S )AlterModelTablezRename a model's table.c                 2    || _         t        | 	  |       y r   )tabler-   r#   )r"   r!   r   r1   s      r   r#   zAlterModelTable.__init__  s    
r   c                 f    | j                   | j                  d}| j                  j                  g |fS )Nr!   r   )r!   r   r1   r4   rQ   s     r   rS   zAlterModelTable.deconstruct  s6    IIZZ

 NN''
 	
r   c                     | j                   |j                  || j                  f   j                  d<   |j	                  || j                  d       y )Nr   Tr   )r   r   r'   r:   r   rY   s      r   r[   zAlterModelTable.state_forwards  sA    GKzzY/088D9dooTBr   c                    |j                   j                  || j                        }| j                  |j                  j
                  |      r@|j                   j                  || j                        }|j                  ||j                  j                  |j                  j                         t        |j                  j                  |j                  j                        D ]  \  }}|j                  j                  j                  j                  s1|j                  |j                  j                  |j                  j                  j                  j                  |j                  j                  j                  j                          y y r   )r^   r_   r!   r`   ra   rb   r   rF   r   r   r   r   r   r   )	r"   r*   re   rf   rg   r   r   r   r   s	            r   ri   z!AlterModelTable.database_forwards  s%   MM++ItyyA	##M$<$<$B$BIN"11)TYYGI(((((( +.ioo.P.PR[RaRaRtRt*u &I))1177DD!00!..66!..66<<EE!..66<<EE Or   c                 *    | j                  ||||      S r   ri   r   s        r   rn   z"AlterModelTable.database_backwards      %%i
HUUr   c                 Z    d| j                   d| j                  | j                  S dS )NzRename table for r   z	(default)r   r&   s    r   rt   zAlterModelTable.describe  s6    II**0DJJA
 	
6AA
 	
r   )r2   r3   r4   r   r#   rS   r[   ri   rn   rt   r5   r6   s   @r   r   r     s&    !	
C$V
r   r   c                   V     e Zd ZdZ fdZed        Zd Zd Zd Z	d Z
d Zd	 Z xZS )
r   Nc                 ~    |rt        t        |            }t        | | j                  |       t        |   |       y r   )r   r   setattrr   r-   r#   )r"   r!   r   r1   s      r   r#   z%AlterTogetherOptionOperation.__init__  s5    1,?@Ld&&5r   c                 .    t        | | j                        S r   )getattrr   r&   s    r   r   z)AlterTogetherOptionOperation.option_value  s    tT--..r   c                 |    d| j                   | j                  | j                  i}| j                  j                  g |fS r   )r!   r   r   r1   r4   rQ   s     r   rS   z(AlterTogetherOptionOperation.deconstruct  sB    DIId//

 NN''
 	
r   c                     |j                   || j                  f   }| j                  |j                  | j                  <   |j                  || j                  d       y NTr   )r   r'   r   r:   r   r   r"   r*   rZ   r   s       r   r[   z+AlterTogetherOptionOperation.state_forwards  sN    ll9doo#=>040A0AD,,-9dooTBr   c           
         |j                   j                  || j                        }| j                  |j                  j
                  |      r|j                   j                  || j                        }t        |d| j                  z        } ||t        |j                  | j                  t                     t        |j                  | j                  t                            y y )Nzalter_%s)
r^   r_   r!   r`   ra   rb   r   r   rF   r   )r"   r*   re   rf   rg   r   r   alter_togethers           r   ri   z.AlterTogetherOptionOperation.database_forwards  s    MM++ItyyA	##M$<$<$B$BIN"11)TYYGI$]JAQAQ4QRN	)9)935A	)9)935A Or   c                 *    | j                  ||||      S r   r   r   s        r   rn   z/AlterTogetherOptionOperation.database_backwards  r   r   c                     | j                  ||      xr- | j                   xs t        fd| j                  D              S )Nc              3   &   K   | ]  }|v  
 y wr   r>   )r@   r9   r!   s     r   rB   z@AlterTogetherOptionOperation.references_field.<locals>.<genexpr>
  s     ETV^Es   )r+   r   anyr"   r   r!   r*   s     ` r   references_fieldz-AlterTogetherOptionOperation.references_field  sC    !!*i8 %%% FE43D3DEE		
r   c           	      p    d| j                   d| j                  dt        | j                  xs d      dS )NzAlter z for z (rr   z constraint(s)))r   r!   lenr   r&   s    r   rt   z%AlterTogetherOptionOperation.describe  s,    7;7G7GTWX\XiXiXomoTpqqr   )r2   r3   r4   r   r#   r   r   rS   r[   ri   rn   r   rt   r5   r6   s   @r   r   r     sB    K / /	
C
	V
rr   r   c                   &     e Zd ZdZdZ fdZ xZS )AlterUniqueTogetherz|
    Change the value of unique_together to the target one.
    Input value of unique_together must be a set of tuples.
    r|   c                 &    t         |   ||       y r   r-   r#   )r"   r!   r|   r1   s      r   r#   zAlterUniqueTogether.__init__  s    /r   r2   r3   r4   r   r   r#   r5   r6   s   @r   r   r     s     $K0 0r   r   c                   &     e Zd ZdZdZ fdZ xZS )AlterIndexTogetherzz
    Change the value of index_together to the target one.
    Input value of index_together must be a set of tuples.
    r}   c                 &    t         |   ||       y r   r   )r"   r!   r}   r1   s      r   r#   zAlterIndexTogether.__init__$  s    ~.r   r   r6   s   @r   r   r     s     #K/ /r   r   c                   J     e Zd ZdZdZ fdZd Zd Zd Zd Z	d Z
d	 Z xZS )
r   z9Represent a change with the order_with_respect_to option.r{   c                 2    || _         t        | 	  |       y r   )r{   r-   r#   )r"   r!   r{   r1   s      r   r#   z AlterOrderWithRespectTo.__init__-  s    %:"r   c                 f    | j                   | j                  d}| j                  j                  g |fS )Nr!   r{   )r!   r{   r1   r4   rQ   s     r   rS   z#AlterOrderWithRespectTo.deconstruct1  s8    II%)%?%?

 NN''
 	
r   c                     |j                   || j                  f   }| j                  |j                  d<   |j	                  || j                  d       y )Nr{   Tr   )r   r'   r{   r:   r   r   s       r   r[   z&AlterOrderWithRespectTo.state_forwards<  sI    ll9doo#=>7;7Q7Q349dooTBr   c                 ~   |j                   j                  || j                        }| j                  |j                  j
                  |      r|j                   j                  || j                        }|j                  j                  rB|j                  j                  s,|j                  ||j                  j                  d             y |j                  j                  r\|j                  j                  sE|j                  j                  d      }|j                         sd|_        |j                  ||       y y y y )N_orderr   )r^   r_   r!   r`   ra   rb   rF   r{   remove_fieldr   has_defaultdefault	add_field)r"   r*   re   rf   rg   to_model
from_modelry   s           r   ri   z)AlterOrderWithRespectTo.database_forwardsA  s    ==**9dii@##M$<$<$B$BHM#229diiHJ55hnn>b>b**:z7G7G7Q7QRZ7[\ 55j>N>N>d>d 00:((*$%EM''	 ?e5 Nr   c                 ,    | j                  ||||       y r   r   r   s        r   rn   z*AlterOrderWithRespectTo.database_backwardsS  s    y-XNr   c                 h    | j                  ||      xr | j                  d u xs || j                  k(  S r   )r+   r{   r   s       r   r   z(AlterOrderWithRespectTo.references_fieldV  s=    !!*i8 **d2 3222		
r   c                 :    d| j                   d| j                  S )NzSet order_with_respect_to on r   r   r&   s    r   rt   z AlterOrderWithRespectTo.describe_  s    :>))TE_E_``r   )r2   r3   r4   r   r   r#   rS   r[   ri   rn   r   rt   r5   r6   s   @r   r   r   (  s1    C)K	
C
$O
ar   r   c                   H     e Zd ZdZg dZ fdZd Zd Zd Zd Z	d Z
 xZS )	r   z
    Set new model options that don't directly affect the database schema
    (like verbose_name, permissions, ordering). Python code in migrations
    may still need them.
    )base_manager_namedefault_manager_namedefault_related_nameget_latest_bymanagedorderingpermissionsdefault_permissionsselect_on_saveverbose_nameverbose_name_pluralc                 2    || _         t        | 	  |       y r   )r:   r-   r#   )r"   r!   r:   r1   s      r   r#   zAlterModelOptions.__init__y  s    r   c                 f    | j                   | j                  d}| j                  j                  g |fS )N)r!   r:   )r!   r:   r1   r4   rQ   s     r   rS   zAlterModelOptions.deconstruct}  s6    II||

 NN''
 	
r   c                 ,   |j                   || j                  f   }i |j                  | j                  |_        | j                  D ]-  }|| j                  vs|j                  j	                  |d       / |j                  || j                  d       y )NFTr   )r   r'   r:   ALTER_OPTION_KEYSr   r   )r"   r*   rZ   r   keys        r   r[   z AlterModelOptions.state_forwards  s    ll9doo#=>E!4!4EE)) 	4C$,,&##''U3	4 	9dooTBr   c                      y r   r>   r   s        r   ri   z#AlterModelOptions.database_forwards      r   c                      y r   r>   r   s        r   rn   z$AlterModelOptions.database_backwards  r  r   c                      d| j                   z  S )NzChange Meta options on %sr    r&   s    r   rt   zAlterModelOptions.describe  s    *TYY66r   )r2   r3   r4   r   r  r#   rS   r[   ri   rn   rt   r5   r6   s   @r   r   r   c  s/    	
C7r   r   c                   F     e Zd ZdZdgZ fdZd Zd Zd Zd Z	d Z
 xZS )	AlterModelManagerszAlter the model's managers.r;   c                 2    || _         t        | 	  |       y r   )r;   r-   r#   )r"   r!   r;   r1   s      r   r#   zAlterModelManagers.__init__  s     r   c                 `    | j                   j                  | j                  | j                  gi fS r   )r1   r4   r!   r;   r&   s    r   rS   zAlterModelManagers.deconstruct  s,    NN''YY&
 	
r   c                     |j                   || j                  f   }t        | j                        |_        |j	                  || j                  d       y r   )r   r'   rV   r;   r   r   s       r   r[   z!AlterModelManagers.state_forwards  sC    ll9doo#=>#DMM29dooTBr   c                      y r   r>   r   s        r   ri   z$AlterModelManagers.database_forwards  r  r   c                      y r   r>   r   s        r   rn   z%AlterModelManagers.database_backwards  r  r   c                      d| j                   z  S )NzChange managers on %sr    r&   s    r   rt   zAlterModelManagers.describe  s    &22r   )r2   r3   r4   r   r   r#   rS   r[   ri   rn   rt   r5   r6   s   @r   r#  r#    s-    %!+
C
3r   r#  c                        e Zd ZdZed        Zy)IndexOperationindexesc                 6    | j                   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   r+  r+    s    K' 'r   r+  c                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)	AddIndexzAdd an index on a model.c                 T    || _         |j                  st        d|z        || _        y )NzSIndexes passed to AddIndex operations require a name argument. %r doesn't have one.)r   r!   r   index)r"   r   r1  s      r   r#   zAddIndex.__init__  s3    $zz1389  
r   c                    |j                   || j                  f   }g |j                  | j                     | j                  j                         |j                  | j                  <   |j                  || j                  d       y r   )r   r   r:   r   r1  r   r   r   s       r   r[   zAddIndex.state_forwards  sw    ll9d.C.C#CD0l+2E2EdFVFV2W0lY]YcYcYiYiYk0lD,,-9d&;&;4Hr   c                     |j                   j                  || j                        }| j                  |j                  j
                  |      r|j                  || j                         y y r   )r^   r_   r   r`   ra   rb   	add_indexr1  rd   s         r   ri   zAddIndex.database_forwards  sR    ''	4??C##M$<$<$B$BEJ##E4::6 Kr   c                     |j                   j                  || j                        }| j                  |j                  j
                  |      r|j                  || j                         y y r   )r^   r_   r   r`   ra   rb   remove_indexr1  rd   s         r   rn   zAddIndex.database_backwards  sR    )))T__E##M$<$<$B$BEJ&&udjj9 Kr   c                 f    | j                   | j                  d}| j                  j                  g |fS )N)r   r1  )r   r1  r1   r4   rQ   s     r   rS   zAddIndex.deconstruct  s6    //ZZ

 NN''
 	
r   c                     d| j                   j                  ddj                  | j                   j                        d| j                  S )NzCreate index z on field(s) z, z
 of model )r1  r!   joinr9   r   r&   s    r   rt   zAddIndex.describe  s4    JJOOIIdjj''(OO
 	
r   N
r2   r3   r4   r   r#   r[   ri   rn   rS   rt   r>   r   r   r/  r/    s$    "I
7
:
	

r   r/  c                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)	RemoveIndexzRemove an index from a model.c                      || _         || _        y r   r   r!   r"   r   r!   s      r   r#   zRemoveIndex.__init__      $	r   c                 4   |j                   || j                  f   }|j                  | j                     }|D cg c]  }|j                  | j                  k7  s|  c}|j                  | j                  <   |j                  || j                  d       y c c}w r   r   r   r:   r   r!   r   )r"   r*   rZ   r   r,  idxs         r   r[   zRemoveIndex.state_forwards  s    ll9d.C.C#CD%%d&6&67@G0a388W[W`W`K`0aD,,-9d&;&;4H 1b   BBc                 .   |j                   j                  || j                        }| j                  |j                  j
                  |      rI|j                  || j                  f   }|j                  | j                        }|j                  ||       y y r   )r^   r_   r   r`   ra   rb   r   r   get_index_by_namer!   r6  )r"   r*   re   rf   rg   rh   from_model_stater1  s           r   ri   zRemoveIndex.database_forwards  s~    )))T__E##M$<$<$B$BEJ)00D<Q<Q1QR$66tyyAE&&ue4 Kr   c                 .   |j                   j                  || j                        }| j                  |j                  j
                  |      rI|j                  || j                  f   }|j                  | j                        }|j                  ||       y y r   )r^   r_   r   r`   ra   rb   r   r   rF  r!   r4  )r"   r*   re   rf   rg   rh   to_model_stater1  s           r   rn   zRemoveIndex.database_backwards  s{    ''	4??C##M$<$<$B$BEJ%__Y8M8M-MNN"44TYY?E##E51 Kr   c                 f    | j                   | j                  d}| j                  j                  g |fS Nr>  )r   r!   r1   r4   rQ   s     r   rS   zRemoveIndex.deconstruct
  s6    //II

 NN''
 	
r   c                 :    d| j                   d| j                  S )NzRemove index z from r!   r   r&   s    r   rt   zRemoveIndex.describe  s    ,0IItGGr   Nr:  r>   r   r   r<  r<    s%    'I52	
Hr   r<  c                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)	AddConstraintconstraintsc                      || _         || _        y r   r   
constraint)r"   r   rS  s      r   r#   zAddConstraint.__init__  s    $$r   c                     |j                   || j                  f   }g |j                  | j                     | j                  |j                  | j                  <   |j                  || j                  d       y r   )r   r   r:   r   rS  r   r   s       r   r[   zAddConstraint.state_forwards   sn    ll9d.C.C#CD0i+2E2EdFVFV2W0iY]YhYh0iD,,-9d&;&;4Hr   c                     |j                   j                  || j                        }| j                  |j                  j
                  |      r|j                  || j                         y y r   )r^   r_   r   r`   ra   rb   add_constraintrS  rd   s         r   ri   zAddConstraint.database_forwards%  sR    ''	4??C##M$<$<$B$BEJ((@ Kr   c                     |j                   j                  || j                        }| j                  |j                  j
                  |      r|j                  || j                         y y r   )r^   r_   r   r`   ra   rb   remove_constraintrS  rd   s         r   rn   z AddConstraint.database_backwards*  sR    ''	4??C##M$<$<$B$BEJ++E4??C Kr   c                 b    | j                   j                  g | j                  | j                  dfS )NrR  )r1   r2   r   rS  r&   s    r   rS   zAddConstraint.deconstruct/  s.    ~~&&////-
 
 	
r   c                 N    d| j                   j                  d| j                  S )NzCreate constraint z
 on model )rS  r!   r   r&   s    r   rt   zAddConstraint.describe5  s    59__5I5I4??[[r   N
r2   r3   r4   r   r#   r[   ri   rn   rS   rt   r>   r   r   rO  rO    s)    K%I
A
D

\r   rO  c                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)	RemoveConstraintrP  c                      || _         || _        y r   r>  r?  s      r   r#   zRemoveConstraint.__init__<  r@  r   c                 4   |j                   || j                  f   }|j                  | j                     }|D cg c]  }|j                  | j                  k7  s|  c}|j                  | j                  <   |j                  || j                  d       y c c}w r   rB  )r"   r*   rZ   r   rP  cs         r   r[   zRemoveConstraint.state_forwards@  s    ll9d.C.C#CD!))$*:*:;<G0_q166UYU^U^K^0_D,,-9d&;&;4H 1`rD  c                 .   |j                   j                  || j                        }| j                  |j                  j
                  |      rI|j                  || j                  f   }|j                  | j                        }|j                  ||       y y r   )r^   r_   r   r`   ra   rb   r   r   get_constraint_by_namer!   rX  )r"   r*   re   rf   rg   rh   rG  rS  s           r   ri   z"RemoveConstraint.database_forwardsF  s~    ''	4??C##M$<$<$B$BEJ)00D<Q<Q1QR)@@KJ++E:> Kr   c                 .   |j                   j                  || j                        }| j                  |j                  j
                  |      rI|j                  || j                  f   }|j                  | j                        }|j                  ||       y y r   )r^   r_   r   r`   ra   rb   r   r   rb  r!   rV  )r"   r*   re   rf   rg   rh   rI  rS  s           r   rn   z#RemoveConstraint.database_backwardsM  s{    ''	4??C##M$<$<$B$BEJ%__Y8M8M-MNN'>>tyyIJ((
; Kr   c                 b    | j                   j                  g | j                  | j                  dfS rK  )r1   r2   r   r!   r&   s    r   rS   zRemoveConstraint.deconstructT  s.    ~~&&//II-
 
 	
r   c                 :    d| j                   d| j                  S )NzRemove constraint z from model rM  r&   s    r   rt   zRemoveConstraint.describeZ  s    7;yy$//RRr   Nr[  r>   r   r   r]  r]  9  s'    KI?<
Sr   r]  N)&	django.dbr   $django.db.migrations.operations.baser   django.db.migrations.stater   django.db.models.optionsr   django.utils.functionalr   r9   r	   r
   r   r   r   utilsr   r   r   r   r   r8   r   r   r   r   r   r   r   r   r   r#  r+  r/  r<  rO  r]  r>   r   r   <module>rl     s    : 1 7 3  F E
Y 
$F4. F4R -.  -FI
. I
X4> 4/
* /
d5r#7 5rp06 0/5 /8a2 8av47, 47n3- 3>'Y '+
~ +
\'H. 'HT\N \@"S~ "Sr   