
    af1                         d dl mZ d dlmZ d dlmZ ddlm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 )    )field_references)NOT_PROVIDED)cached_property   )	Operationc                   j     e Zd Zd
dZed             Zed             Zd Zd Zd Z	d Z
 fd	Z xZS )FieldOperationNc                 0    || _         || _        || _        d S N
model_namenamefield)selfr   r   r   s       X/var/www/html/env/lib/python3.11/site-packages/django/db/migrations/operations/fields.py__init__zFieldOperation.__init__	   s    $	


    c                 4    | j                                         S r   )r   lowerr   s    r   model_name_lowerzFieldOperation.model_name_lower   s    $$&&&r   c                 4    | j                                         S r   )r   r   r   s    r   
name_lowerzFieldOperation.name_lower   s    y   r   c                 "    | j         |j         k    S r   )r   r   	operations     r   is_same_model_operationz&FieldOperation.is_same_model_operation   s    $	(BBBr   c                 L    |                      |          o| j        |j        k    S r   )r   r   r   s     r   is_same_field_operationz&FieldOperation.is_same_field_operation   s*    ((33 89#77	
r   c                     |                                 }|| j        k    rdS | j        r,t          t	          || j        f| j        ||f                    S dS )NTF)r   r   r   boolr   )r   r   	app_labelr   s       r   references_modelzFieldOperation.references_model   sj    ZZ\\
...4: 	  56J
+    ur   c                    |                                 }|| j        k    r9|| j        k    rdS | j        r%t	          | j        d          r|| j        j        v rdS | j        dS t          t          || j        f| j        ||f|                    S )NTfrom_fieldsF)r   r   r   r   hasattrr%   r!   r   )r   r   r   r"   r   s        r   references_fieldzFieldOperation.references_field-   s    %++--t444ty  t
DJ66 DJ222t:5D12
,-	 
 
 	
r   c                     t                                          ||          p!|                    | j        | j        |           S r   )superreducer'   r   r   r   r   r"   	__class__s      r   r*   zFieldOperation.reduceE   sD    ww~~i33 
9;U;UOTY	<
 <
 8
 	
r   r   )__name__
__module____qualname__r   r   r   r   r   r   r#   r'   r*   __classcell__r,   s   @r   r	   r	      s           
 ' ' _' ! ! _!C C C
 
 
  
 
 
0
 
 
 
 
 
 
 
 
r   r	   c                   b     e Zd ZdZd fd	Zd Zd Zd Zd Zd Z	e
d	             Z fd
Z xZS )AddFieldzAdd a field to a model.Tc                 \    || _         t                                          |||           d S r   preserve_defaultr)   r   r   r   r   r   r6   r,   s        r   r   zAddField.__init__N   -     0T511111r   c                 p    | j         | j        | j        d}| j        dur
| j        |d<   | j        j        g |fS Nr   Tr6   r   r   r   r6   r,   r-   r   kwargss     r   deconstructzAddField.deconstructR   M    /IZ
 

  ,,)-)>F%&'V44r   c                 `    |                     || j        | j        | j        | j                   d S r   )	add_fieldr   r   r   r6   r   r"   states      r   state_forwardszAddField.state_forwards\   s;    !IJ!	
 	
 	
 	
 	
r   c                    |j                             || j                  }|                     |j        j        |          r|j                             || j                  }|j                            | j                  }| j	        s| j
        j        |_        |                    ||           | j	        st          |_        d S d S d S r   )apps	get_modelr   allow_migrate_model
connectionalias_meta	get_fieldr   r6   r   defaultrA   r   )r   r"   schema_editor
from_stateto_stateto_model
from_modelr   s           r   database_forwardszAddField.database_forwardse   s    =**9doFF##M$<$BHMM 
	-#229doNNJN,,TY77E( 3 $
 2##   ( - ,
	- 
	-- -r   c                     |j                             || j                  }|                     |j        j        |          r5|                    ||j                            | j	                             d S d S r   
rF   rG   r   rH   rI   rJ   remove_fieldrK   rL   r   r   r"   rN   rO   rP   rR   s         r   database_backwardszAddField.database_backwardss   }    _..y$/JJ
##M$<$BJOO 	&&J,66tyAA    	 	r   c                 &    d| j         d| j        S )Nz
Add field  to r   r   r   s    r   describezAddField.describez   s     '+yyy$//BBr   c                 $    | j         d| j        S )N_r   r   r   s    r   migration_name_fragmentz AddField.migration_name_fragment}   s    ///AAr   c                    t          |t                    r|                     |          rt          |t                    r"t	          | j        |j        |j                  gS t          |t                    rg S t          |t                    r"t	          | j        |j
        | j                  gS t                                          ||          S Nr   )
isinstancer	   r   
AlterFieldr3   r   r   r   RemoveFieldRenameFieldnew_namer)   r*   r+   s      r   r*   zAddField.reduce   s    i00 	T5Q5Q6
 6
 	 )Z00 #'?&^'o    I{33 		I{33 #'?&/"j    ww~~i333r   Tr-   r.   r/   __doc__r   r>   rD   rS   rX   r]   propertyra   r*   r0   r1   s   @r   r3   r3   K   s        !!2 2 2 2 2 25 5 5
 
 
- - -  C C C B B XB4 4 4 4 4 4 4 4 4r   r3   c                   V     e Zd ZdZd Zd Zd Zd Zd Ze	d             Z
 fdZ xZS )	rf   zRemove a field from a model.c                 >    | j         | j        d}| j        j        g |fS )N)r   r   )r   r   r,   r-   r<   s     r   r>   zRemoveField.deconstruct   s,    /I
 
 'V44r   c                 H    |                     || j        | j                   d S r   )rV   r   r   rB   s      r   rD   zRemoveField.state_forwards   s%    9d&;TYGGGGGr   c                     |j                             || j                  }|                     |j        j        |          r5|                    ||j                            | j	                             d S d S r   rU   rW   s         r   rS   zRemoveField.database_forwards   rY   r   c                 0   |j                             || j                  }|                     |j        j        |          rU|j                             || j                  }|                    ||j                            | j	                             d S d S r   )
rF   rG   r   rH   rI   rJ   rA   rK   rL   r   r   r"   rN   rO   rP   rQ   rR   s          r   rX   zRemoveField.database_backwards   s    =**9doFF##M$<$BHMM 	U#229doNNJ##J0H0H0S0STTTTT	U 	Ur   c                 &    d| j         d| j        S )NzRemove field z from r\   r   s    r   r]   zRemoveField.describe   s     ,0IIItGGr   c                 &    d| j         d| j        S )Nremove_r_   r`   r   s    r   ra   z#RemoveField.migration_name_fragment   s     !%!6!6!6HHr   c                     ddl m} t          ||          r|j        | j        k    r|gS t                                          ||          S )Nr   )DeleteModel)modelsrw   rd   r   r   r)   r*   )r   r   r"   rw   r,   s       r   r*   zRemoveField.reduce   sZ    '''''' y+..	$(===;ww~~i333r   )r-   r.   r/   rk   r>   rD   rS   rX   r]   rl   ra   r*   r0   r1   s   @r   rf   rf      s        &&5 5 5H H H  U U UH H H I I XI4 4 4 4 4 4 4 4 4r   rf   c                   b     e Zd ZdZd fd	Zd Zd Zd Zd Zd Z	e
d	             Z fd
Z xZS )re   z`
    Alter a field's database column (e.g. null, max_length) to the provided
    new field.
    Tc                 \    || _         t                                          |||           d S r   r5   r7   s        r   r   zAlterField.__init__   r8   r   c                 p    | j         | j        | j        d}| j        dur
| j        |d<   | j        j        g |fS r:   r;   r<   s     r   r>   zAlterField.deconstruct   r?   r   c                 `    |                     || j        | j        | j        | j                   d S r   )alter_fieldr   r   r   r6   rB   s      r   rD   zAlterField.state_forwards   s=    !IJ!	
 	
 	
 	
 	
r   c                    |j                             || j                  }|                     |j        j        |          r|j                             || j                  }|j                            | j                  }|j                            | j                  }| j	        s| j
        j        |_        |                    |||           | j	        st          |_        d S d S d S r   )rF   rG   r   rH   rI   rJ   rK   rL   r   r6   r   rM   r}   r   )	r   r"   rN   rO   rP   rQ   rR   
from_fieldto_fields	            r   rS   zAlterField.database_forwards   s    =**9doFF##M$<$BHMM 	0#229doNNJ#)33DI>>J~//	::H( 6#':#5 %%j*hGGG( 0#/   	0 	00 0r   c                 6    |                      ||||           d S r   )rS   )r   r"   rN   rO   rP   s        r   rX   zAlterField.database_backwards   s"    y-XNNNNNr   c                 &    d| j         d| j        S )NzAlter field  on r\   r   s    r   r]   zAlterField.describe   s     )-DOODDr   c                 &    d| j         d| j        S )Nalter_r_   r`   r   s    r   ra   z"AlterField.migration_name_fragment   s      $ 5 5 5tGGr   c                 b   t          |t          t          f          r|                     |          r|gS t          |t                    rD|                     |          r/| j        j        #|t          | j        |j        | j                  gS t                      
                    ||          S rc   )rd   re   rf   r   rg   r   	db_columnr   rh   r)   r*   r+   s      r   r*   zAlterField.reduce   s    
K0
 
 	**955	 ;y+..	,,Y77	 
$, #"+*    ww~~i333r   ri   rj   r1   s   @r   re   re      s         
2 2 2 2 2 25 5 5
 
 

0 
0 
0O O OE E E H H XH4 4 4 4 4 4 4 4 4r   re   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ed
             Zd Z fdZ xZS )rg   z8Rename a field on the model. Might affect db_column too.c                 h    || _         || _        t                                          ||           d S r   )old_namerh   r)   r   )r   r   r   rh   r,   s       r   r   zRenameField.__init__  s1      X.....r   c                 4    | j                                         S r   )r   r   r   s    r   old_name_lowerzRenameField.old_name_lower      }""$$$r   c                 4    | j                                         S r   )rh   r   r   s    r   new_name_lowerzRenameField.new_name_lower  r   r   c                 J    | j         | j        | j        d}| j        j        g |fS )N)r   r   rh   )r   r   rh   r,   r-   r<   s     r   r>   zRenameField.deconstruct  s1    /
 

 'V44r   c                 T    |                     || j        | j        | j                   d S r   )rename_fieldr   r   rh   rB   s      r   rD   zRenameField.state_forwards&  s4    t,dmT]	
 	
 	
 	
 	
r   c                 l   |j                             || j                  }|                     |j        j        |          rs|j                             || j                  }|                    ||j                            | j	                  |j                            | j
                             d S d S r   )rF   rG   r   rH   rI   rJ   r}   rK   rL   r   rh   rr   s          r   rS   zRenameField.database_forwards+      =**9doFF##M$<$BHMM 	#229doNNJ%% **4=99((77    	 	r   c                 l   |j                             || j                  }|                     |j        j        |          rs|j                             || j                  }|                    ||j                            | j	                  |j                            | j
                             d S d S r   )rF   rG   r   rH   rI   rJ   r}   rK   rL   rh   r   rr   s          r   rX   zRenameField.database_backwards5  r   r   c                 6    d| j         d| j        d| j        S )NzRename field r   r[   )r   r   rh   r   s    r   r]   zRenameField.describe?  s'     MMMOOOMM
 	
r   c                 6    d| j         d| j        d| j        S )Nrename_r_   )r   r   r   r   s    r   ra   z#RenameField.migration_name_fragmentF  s1      !!!
 	
r   c                     |                      ||          o9|                                | j        k    p|                                | j        k    S r   )r#   r   r   r   )r   r   r   r"   s       r   r'   zRenameField.references_fieldN  sG    $$Z;; 
JJLLD//V4::<<4CV3V	
r   c                    t          |t                    rF|                     |          r1| j        |j        k    r!t          | j        | j        |j                  gS t          t          |           
                    ||          pB|                    | j        | j        |          p |                    | j        | j        |           S r   )rd   rg   r   r   r   r   r   rh   r)   r	   r*   r'   r+   s      r   r*   zRenameField.reduceS  s    y+..	,,Y77	 #y'??? OM&   ^T**11)YGG 
&&tyQQ U))$/4=)TTL
 	
r   )r-   r.   r/   rk   r   r   r   r   r>   rD   rS   rX   r]   rl   ra   r'   r*   r0   r1   s   @r   rg   rg     s       BB/ / / / /
 % % _% % % _%5 5 5
 
 

    
 
 
 
 
 X

 
 


 
 
 
 
 
 
 
 
r   rg   N)django.db.migrations.utilsr   django.db.modelsr   django.utils.functionalr   baser   r	   r3   rf   re   rg    r   r   <module>r      sO   7 7 7 7 7 7 ) ) ) ) ) ) 3 3 3 3 3 3      @
 @
 @
 @
 @
Y @
 @
 @
FL4 L4 L4 L4 L4~ L4 L4 L4^)4 )4 )4 )4 )4. )4 )4 )4XE4 E4 E4 E4 E4 E4 E4 E4PW
 W
 W
 W
 W
. W
 W
 W
 W
 W
r   