
    Hwg1                         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y)    )field_references)NOT_PROVIDED)cached_property   )	Operationc                   ^     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 )
FieldOperationc                 .    || _         || _        || _        y N
model_namenamefield)selfr   r   r   s       ]/var/www/horilla/myenv/lib/python3.12/site-packages/django/db/migrations/operations/fields.py__init__zFieldOperation.__init__	   s    $	
    c                 6    | j                   j                         S r   )r   lowerr   s    r   model_name_lowerzFieldOperation.model_name_lower   s    $$&&r   c                 6    | j                   j                         S r   )r   r   r   s    r   
name_lowerzFieldOperation.name_lower   s    yy  r   c                 4    | j                   |j                   k(  S r   )r   r   	operations     r   is_same_model_operationz&FieldOperation.is_same_model_operation   s    $$	(B(BBBr   c                 Z    | j                  |      xr | j                  |j                  k(  S r   )r   r   r   s     r   is_same_field_operationz&FieldOperation.is_same_field_operation   s,    ((3 89#7#77	
r   c                     |j                         }|| j                  k(  ry| j                  r.t        t	        || j                  f| j                  ||f            S y)NTF)r   r   r   boolr   )r   r   	app_labelr   s       r   references_modelzFieldOperation.references_model   s\    ZZ\
...::  5 56JJ
+  r   c                 N   |j                         }|| j                  k(  rK|| j                  k(  ry| j                  r/t	        | j                  d      r|| j                  j
                  v ry| j                  y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tyy 

DJJ6DJJ222::D112

,-	
 	
r   c                 x    t         |   ||      xs( |j                  | j                  | j                  |       S r   )superreducer'   r   r   r   r   r"   	__class__s      r   r*   zFieldOperation.reduceE   s<    w~i3 
9;U;UOOTYY	<
 8
 	
r   r   )__name__
__module____qualname__r   r   r   r   r   r   r#   r'   r*   __classcell__r,   s   @r   r	   r	      sO    
 ' ' ! !C

0
 
r   r	   c                   \     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.c                 6    || _         t        | 	  |||       y r   preserve_defaultr)   r   r   r   r   r   r6   r,   s        r   r   zAddField.__init__N        0T51r   c                     | 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   V    //IIZZ

   ,)-)>)>F%&''V44r   c                 ~    |j                  || j                  | j                  | j                  | j                         y r   )	add_fieldr   r   r   r6   r   r"   states      r   state_forwardszAddField.state_forwards\   s1    !!IIJJ!!	
r   c                    |j                   j                  || j                        }| j                  |j                  j
                  |      r|j                   j                  || j                        }|j                  j                  | j                        }| j                  s| j                  j                  |_        |j                  ||       | j                  st        |_        y y y 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    ==**9dooF##M$<$<$B$BHM#229dooNJNN,,TYY7E(( $

 2 2## (( , ) Nr   c                    |j                   j                  || j                        }| j                  |j                  j
                  |      r6|j                  ||j                  j                  | j                               y y r   
rF   rG   r   rH   rI   rJ   remove_fieldrK   rL   r   r   r"   rN   rO   rP   rR   s         r   database_backwardszAddField.database_backwardss   f    __..y$//J
##M$<$<$B$BJO&&J,,66tyyA Pr   c                 :    d| j                   d| j                  S )Nz
Add field  to r   r   r   s    r   describezAddField.describez   s    '+yy$//BBr   c                 8    | j                   d| j                  S )N_r   r   r   s    r   migration_name_fragmentz AddField.migration_name_fragment}   s    //AAr   c                 ~   t        |t              r| j                  |      rt        |t              r-t	        | j
                  |j                  |j                        gS t        |t              rg S t        |t              r-t	        | j
                  |j                  | j                        gS t        | 1  ||      S Nr   )
isinstancer	   r   
AlterFieldr3   r   r   r   RemoveFieldRenameFieldnew_namer)   r*   r+   s      r   r*   zAddField.reduce   s    i0T5Q5Q6
 )Z0#'??&^^'oo  I{3	I{3#'??&//"jj  w~i33r   Tr-   r.   r/   __doc__r   r>   rD   rS   rX   r]   propertyra   r*   r0   r1   s   @r   r3   r3   K   sE    !25
-C B B4 4r   r3   c                   P     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                 f    | j                   | j                  d}| j                  j                  g |fS )N)r   r   )r   r   r,   r-   r<   s     r   r>   zRemoveField.deconstruct   s0    //II
 ''V44r   c                 R    |j                  || j                  | j                         y r   )rV   r   r   rB   s      r   rD   zRemoveField.state_forwards   s    9d&;&;TYYGr   c                    |j                   j                  || j                        }| j                  |j                  j
                  |      r6|j                  ||j                  j                  | j                               y y r   rU   rW   s         r   rS   zRemoveField.database_forwards   rY   r   c                 T   |j                   j                  || j                        }| j                  |j                  j
                  |      r\|j                   j                  || j                        }|j                  ||j                  j                  | j                               y y 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{    ==**9dooF##M$<$<$B$BHM#229dooNJ##J0H0H0ST Nr   c                 :    d| j                   d| j                  S )NzRemove field z from r\   r   s    r   r]   zRemoveField.describe   s    ,0IItGGr   c                 :    d| j                   d| j                  S )Nremove_r_   r`   r   s    r   ra   z#RemoveField.migration_name_fragment   s    !%!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   s?    ' y+.$$(=(==;w~i33r   )r-   r.   r/   rk   r>   rD   rS   rX   r]   rl   ra   r*   r0   r1   s   @r   rf   rf      sB    &5HUH I I4 4r   rf   c                   \     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.
    c                 6    || _         t        | 	  |||       y r   r5   r7   s        r   r   zAlterField.__init__   r8   r   c                     | 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                  | j                         y r   )alter_fieldr   r   r   r6   rB   s      r   rD   zAlterField.state_forwards   s3    !!IIJJ!!	
r   c                 "   |j                   j                  || j                        }| j                  |j                  j
                  |      r|j                   j                  || j                        }|j                  j                  | j                        }|j                  j                  | j                        }| j                  s| j                  j                  |_        |j                  |||       | j                  st        |_        y y y 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    ==**9dooF##M$<$<$B$BHM#229dooNJ#))33DII>J~~//		:H((#'::#5#5 %%j*hG((#/  ) Nr   c                 ,    | j                  ||||       y r   )rS   )r   r"   rN   rO   rP   s        r   rX   zAlterField.database_backwards   s    y-X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 5tGGr   c                 6   t        |t              r| j                  |      r|gS t        |t              rU| j                  |      rD| j                  j
                  .|t        | j                  |j                  | j                        gS t        | )  ||      S rc   )rd   rf   r   rg   r   	db_columnre   r   rh   r)   r*   r+   s      r   r*   zAlterField.reduce   s    i-$2N2N3
 ;y+.,,Y7

$$, #"++**  w~i33r   ri   rj   r1   s   @r   re   re      sH    
25

0OE H H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                 B    || _         || _        t        |   ||       y r   )old_namerh   r)   r   )r   r   r   rh   r,   s       r   r   zRenameField.__init__  s       X.r   c                 6    | j                   j                         S r   )r   r   r   s    r   old_name_lowerzRenameField.old_name_lower      }}""$$r   c                 6    | j                   j                         S r   )rh   r   r   s    r   new_name_lowerzRenameField.new_name_lower  r   r   c                 |    | 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  s7    //

 ''V44r   c                 h    |j                  || j                  | j                  | j                         y r   )rename_fieldr   r   rh   rB   s      r   rD   zRenameField.state_forwards&  s'    t,,dmmT]]	
r   c                    |j                   j                  || j                        }| j                  |j                  j
                  |      r|j                   j                  || j                        }|j                  ||j                  j                  | j                        |j                  j                  | j                               y y r   )rF   rG   r   rH   rI   rJ   r}   rK   rL   r   rh   rr   s          r   rS   zRenameField.database_forwards+      ==**9dooF##M$<$<$B$BHM#229dooNJ%%  **4==9((7 Nr   c                    |j                   j                  || j                        }| j                  |j                  j
                  |      r|j                   j                  || j                        }|j                  ||j                  j                  | j                        |j                  j                  | j                               y y r   )rF   rG   r   rH   rI   rJ   r}   rK   rL   rh   r   rr   s          r   rX   zRenameField.database_backwards5  r   r   c                 T    d| j                   d| j                  d| j                  S )NzRename field r   r[   )r   r   rh   r   s    r   r]   zRenameField.describe?  s!    MMOOMM
 	
r   c                 T    d| j                   d| j                  d| j                  S )Nrename_r_   )r   r   r   r   s    r   ra   z#RenameField.migration_name_fragmentF  s)     !!
 	
r   c                     | j                  ||      xr< |j                         | j                  k(  xs |j                         | j                  k(  S r   )r#   r   r   r   )r   r   r   r"   s       r   r'   zRenameField.references_fieldN  sF    $$Z; 
JJLD///V4::<4CVCV3V	
r   c                    t        |t              rV| j                  |      rE| j                  |j                  k(  r,t        | j
                  | j                  |j                        gS t        t        | +  ||      xsQ |j                  | j
                  | j                  |      xs' |j                  | 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##y'?'?? OOMM&&  ^T1)YG 
&&tyQ U))$//4==)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     so    B/
 % % % %5

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

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