
    `?i1                         d dl mZ d dlmZmZ d dlmZ d dlmZ ddl	m
Z
mZ  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Model)replace)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       x/home/cursorai/projects/django-cronjob-utils/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                    |j                         }|| j                  k(  r| j                  k(  ry| j                  rt	        | j                  d      r| j                  j
                  v ry| j                  j                  r<t        fdt        j                  | j                  j                        D              ry| j                  yt        t        || j                  f| j                  ||f            S )NTfrom_fieldsc              3   ,   K   | ]  ^}}|k(    y wr    ).0
field_name_r   s      r   	<genexpr>z2FieldOperation.references_field.<locals>.<genexpr>:   s&      2+
Q $&+s   F)r   r   r   r   hasattrr(   	generatedanyr   _get_expr_references
expressionr$   r   )r   r   r   r%   r   s     `  r   references_fieldzFieldOperation.references_field.   s    %++-t444tyy zzDJJ6

 6 66ZZ))c 2*/*D*D

--+2 /  ::D112

,-	
 	
r   c                 x    t         |   ||      xs( |j                  | j                  | j                  |       S r   )superreducer4   r   r   r   r   r%   	__class__s      r   r7   zFieldOperation.reduceM   s<    w~i3 
9;U;UOOTYY	<
 8
 	
r   r   )__name__
__module____qualname__r   r   r   r   r    r"   r&   r4   r7   __classcell__r9   s   @r   r   r   	   sO    
 ' ' ! !C

>
 
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_defaultr6   r   r   r   r   r   rC   r9   s        r   r   zAddField.__init__X        0T51r   c                     | j                   | j                  | j                  d}| j                  dur| j                  |d<   | j                  j
                  g |fS Nr   TrC   r   r   r   rC   r9   r:   r   kwargss     r   deconstructzAddField.deconstruct\   V    //IIZZ

   ,)-)>)>F%&''V44r   c                 ~    |j                  || j                  | j                  | j                  | j                         y r   )	add_fieldr   r   r   rC   r   r%   states      r   state_forwardszAddField.state_forwardsf   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   rC   r   defaultrN   r   )r   r%   schema_editor
from_stateto_stateto_model
from_modelr   s           r   database_forwardszAddField.database_forwardso   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   
rS   rT   r   rU   rV   rW   remove_fieldrX   rY   r   r   r%   r[   r\   r]   r_   s         r   database_backwardszAddField.database_backwards}   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 )Nr-   r   r   r   s    r   migration_name_fragmentz AddField.migration_name_fragment   s    //AAr   c                 @   t        |t              r~| j                  |      rmt        |t              r#t	        | |j
                  |j                        gS t        |t              rg S t        |t              rt	        | |j                        gS t        | -  ||      S )N)r   r   r   )
isinstancer   r"   
AlterFieldr   r   r   RemoveFieldRenameFieldnew_namer6   r7   r8   s      r   r7   zAddField.reduce   s    i0T5Q5Q6
 )Z0&^^'oo  I{3	I{39+=+=>??w~i33r   T)r:   r;   r<   __doc__r
   ADDITIONcategoryr   rK   rQ   r`   re   rj   propertyrm   r7   r=   r>   s   @r   r@   r@   S   sP    ! ))H25
-C B B4 4r   r@   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 )	rr   zRemove a field from a model.c                 f    | j                   | j                  d}| j                  j                  g |fS )N)r   r   )r   r   r9   r:   rI   s     r   rK   zRemoveField.deconstruct   s0    //II
 ''V44r   c                 R    |j                  || j                  | j                         y r   )rc   r   r   rO   s      r   rQ   zRemoveField.state_forwards   s    9d&;&;TYYGr   c                    |j                   j                  || j                        }| j                  |j                  j
                  |      r6|j                  ||j                  j                  | j                               y y r   rb   rd   s         r   r`   zRemoveField.database_forwards   rf   r   c                 T   |j                   j                  || j                        }| j                  |j                  j
                  |      r\|j                   j                  || j                        }|j                  ||j                  j                  | j                               y y r   )
rS   rT   r   rU   rV   rW   rN   rX   rY   r   r   r%   r[   r\   r]   r^   r_   s          r   re   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 ri   r   s    r   rj   zRemoveField.describe   s    ,0IItGGr   c                 :    d| j                   d| j                  S )Nremove_r-   rl   r   s    r   rm   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)modelsr   rp   r   r   r6   r7   )r   r   r%   r   r9   s       r   r7   zRemoveField.reduce   s?    ' y+.$$(=(==;w~i33r   )r:   r;   r<   rv   r
   REMOVALrx   rK   rQ   r`   re   rj   ry   rm   r7   r=   r>   s   @r   rr   rr      sM    & ((H5HUH I I4 4r   rr   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 )rq   z`
    Alter a field's database column (e.g. null, max_length) to the provided
    new field.
    c                 6    || _         t        | 	  |||       y r   rB   rD   s        r   r   zAlterField.__init__   rE   r   c                     | j                   | j                  | j                  d}| j                  dur| j                  |d<   | j                  j
                  g |fS rG   rH   rI   s     r   rK   zAlterField.deconstruct   rL   r   c                 ~    |j                  || j                  | j                  | j                  | j                         y r   )alter_fieldr   r   r   rC   rO   s      r   rQ   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   )rS   rT   r   rU   rV   rW   rX   rY   r   rC   r   rZ   r   r   )	r   r%   r[   r\   r]   r^   r_   
from_fieldto_fields	            r   r`   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   )r`   )r   r%   r[   r\   r]   s        r   re   zAlterField.database_backwards   s    y-XNr   c                 :    d| j                   d| j                  S )NzAlter field  on ri   r   s    r   rj   zAlterField.describe   s    )-DOODDr   c                 :    d| j                   d| j                  S )Nalter_r-   rl   r   s    r   rm   z"AlterField.migration_name_fragment   s     $ 5 5tGGr   c                    t        |t        t        f      r| j                  |      r|gS t        |t              r@| j                  |      r/| j
                  j                  |t        | |j                        gS t        | )  ||      S )Nro   )rp   rq   rr   r"   rs   r   	db_columnr   rt   r6   r7   r8   s      r   r7   zAlterField.reduce  s    
K0
**95;y+.,,Y7

$$, 9#5#56  w~i33r   ru   )r:   r;   r<   rv   r
   
ALTERATIONrx   r   rK   rQ   r`   re   rj   ry   rm   r7   r=   r>   s   @r   rq   rq      sU    
 !++H25

0OE H H4 4r   rq   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 )rs   z8Rename a field on the model. Might affect db_column too.c                 B    || _         || _        t        |   ||       y r   )old_namert   r6   r   )r   r   r   rt   r9   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   )rt   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   rt   )r   r   rt   r9   r:   rI   s     r   rK   zRenameField.deconstruct$  s7    //

 ''V44r   c                 h    |j                  || j                  | j                  | j                         y r   )rename_fieldr   r   rt   rO   s      r   rQ   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   )rS   rT   r   rU   rV   rW   r   rX   rY   r   rt   r   s          r   r`   zRenameField.database_forwards1      ==**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   )rS   rT   r   rU   rV   rW   r   rX   rY   rt   r   r   s          r   re   zRenameField.database_backwards;  r   r   c                 T    d| j                   d| j                  d| j                  S )NzRename field r   rh   )r   r   rt   r   s    r   rj   zRenameField.describeE  s!    MMOOMM
 	
r   c                 T    d| j                   d| j                  d| j                  S )Nrename_r-   )r   r   r   r   s    r   rm   z#RenameField.migration_name_fragmentL  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   r4   zRenameField.references_fieldT  sF    $$Z; 
JJLD///V4::<4CVCV3V	
r   c                 v   t        |t              rB| j                  |      r1| j                  |j                  k(  rt        | |j                        gS t        t        | '  ||      xsQ |j                  | j                  | j                  |      xs' |j                  | j                  | j                  |       S )N)rt   )rp   rs   r    r   r   r   rt   r6   r   r7   r4   r   r   r8   s      r   r7   zRenameField.reduceY  s    y+.,,Y7##y'?'??D9+=+=>?? ^T1)YG 
&&tyQ U))$//4==)TL
 	
r   )r:   r;   r<   rv   r
   r   rx   r   r   r   r   rK   rQ   r`   re   rj   ry   rm   r4   r7   r=   r>   s   @r   rs   rs     sz    B ++H/
 % % % %5

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


 
r   rs   N)django.db.migrations.utilsr   django.db.modelsr   r   django.utils.copyr   django.utils.functionalr   baser	   r
   r   r@   rr   rq   rs   r*   r   r   <module>r      s\    7 0 % 3 .G
Y G
TH4~ H4V+4. +4\C4 C4LS
. S
r   