
    gd2                         d dl mZ d dlmZ d dlmZ ddlmZ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   )	OperationOperationCategoryc                   ^     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/python.vincentserveurtest.ovh/public_html/venv/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                   t     e Zd ZdZej
                  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   r7   r-   s        r   r   zAddField.__init__P        0T51r   c                     | j                   | j                  | j                  d}| j                  dur| j                  |d<   | j                  j
                  g |fS Nr   Tr7   r   r   r   r7   r-   r.   r   kwargss     r   deconstructzAddField.deconstructT   V    //IIZZ

   ,)-)>)>F%&''V44r   c                 ~    |j                  || j                  | j                  | j                  | j                         y r   )	add_fieldr   r   r   r7   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   r7   r   defaultrB   r   )r   r#   schema_editor
from_stateto_stateto_model
from_modelr   s           r   database_forwardszAddField.database_forwardsg   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   
rG   rH   r   rI   rJ   rK   remove_fieldrL   rM   r   r   r#   rO   rP   rQ   rS   s         r   database_backwardszAddField.database_backwardsu   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.describe|   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    
AlterFieldr4   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/   r0   __doc__r   ADDITIONcategoryr   r?   rE   rT   rY   r^   propertyrb   r+   r1   r2   s   @r   r4   r4   K   sP    ! ))H25
-C B B4 4r   r4   c                   h     e Zd ZdZej
                  Zd Zd Zd Z	d Z
d Zed        Z fdZ xZS )	rg   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   )rW   r   r   rC   s      r   rE   zRemoveField.state_forwards   s    9d&;&;TYYGr   c                    |j                   j                  || j                        }| j                  |j                  j
                  |      r6|j                  ||j                  j                  | j                               y y r   rV   rX   s         r   rT   zRemoveField.database_forwards   rZ   r   c                 T   |j                   j                  || j                        }| j                  |j                  j
                  |      r\|j                   j                  || j                        }|j                  ||j                  j                  | j                               y y r   )
rG   rH   r   rI   rJ   rK   rB   rL   rM   r   r   r#   rO   rP   rQ   rR   rS   s          r   rY   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`   ra   r   s    r   rb   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)modelsry   re   r   r   r*   r+   )r   r   r#   ry   r-   s       r   r+   zRemoveField.reduce   s?    ' y+.$$(=(==;w~i33r   )r.   r/   r0   rk   r   REMOVALrm   r?   rE   rT   rY   r^   rn   rb   r+   r1   r2   s   @r   rg   rg      sM    & ((H5HUH I I4 4r   rg   c                   t     e Zd ZdZej
                  Zd
 fd	Zd Zd Z	d Z
d Zd Zed        Z fd	Z xZS )rf   z`
    Alter a field's database column (e.g. null, max_length) to the provided
    new field.
    c                 6    || _         t        | 	  |||       y r   r6   r8   s        r   r   zAlterField.__init__   r9   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   r7   rC   s      r   rE   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   )rG   rH   r   rI   rJ   rK   rL   rM   r   r7   r   rN   r   r   )	r   r#   rO   rP   rQ   rR   rS   
from_fieldto_fields	            r   rT   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   )rT   )r   r#   rO   rP   rQ   s        r   rY   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`   ra   r   s    r   rb   z"AlterField.migration_name_fragment   s     $ 5 5tGGr   c                 B   t        |t        t        f      r| j                  |      r|gS t        |t              rU| j                  |      rD| j
                  j                  .|t        | j                  |j                  | j
                        gS t        | )  ||      S rd   )re   rf   rg   r    rh   r   	db_columnr   ri   r*   r+   r,   s      r   r+   zAlterField.reduce   s    
K0
**95;y+.,,Y7

$$, #"++**  w~i33r   rj   )r.   r/   r0   rk   r   
ALTERATIONrm   r   r?   rE   rT   rY   r^   rn   rb   r+   r1   r2   s   @r   rf   rf      sU    
 !++H25

0OE H H4 4r   rf   c                        e Zd ZdZej
                  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 )rh   z8Rename a field on the model. Might affect db_column too.c                 B    || _         || _        t        |   ||       y r   )old_nameri   r*   r   )r   r   r   ri   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   )ri   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   ri   )r   r   ri   r-   r.   r=   s     r   r?   zRenameField.deconstruct&  s7    //

 ''V44r   c                 h    |j                  || j                  | j                  | j                         y r   )rename_fieldr   r   ri   rC   s      r   rE   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   )rG   rH   r   rI   rJ   rK   r   rL   rM   r   ri   rt   s          r   rT   zRenameField.database_forwards3      ==**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   )rG   rH   r   rI   rJ   rK   r   rL   rM   ri   r   rt   s          r   rY   zRenameField.database_backwards=  r   r   c                 T    d| j                   d| j                  d| j                  S )NzRename field r   r\   )r   r   ri   r   s    r   r^   zRenameField.describeG  s!    MMOOMM
 	
r   c                 T    d| j                   d| j                  d| j                  S )Nrename_r`   )r   r   r   r   s    r   rb   z#RenameField.migration_name_fragmentN  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_fieldV  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   )re   rh   r   r   r   r   r   ri   r*   r
   r+   r(   r,   s      r   r+   zRenameField.reduce[  s    y+.,,Y7##y'?'?? OOMM&&  ^T1)YG 
&&tyQ U))$//4==)TL
 	
r   )r.   r/   r0   rk   r   r   rm   r   r   r   r   r?   rE   rT   rY   r^   rn   rb   r(   r+   r1   r2   s   @r   rh   rh     sz    B ++H/
 % % % %5

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


 
r   rh   N)django.db.migrations.utilsr   django.db.modelsr   django.utils.functionalr   baser   r   r
   r4   rg   rf   rh    r   r   <module>r      sY    7 ) 3 .@
Y @
FN4~ N4b+4. +4\G4 G4TY
. Y
r   