
    MȂi1                         S SK Jr  S SKJrJr  S SKJr  S SKJr  SSK	J
r
Jr   " S S\
5      r " S	 S
\5      r " S S\5      r " S S\5      r " S S\5      rg)    )field_references)NOT_PROVIDEDModel)replace)cached_property   )	OperationOperationCategoryc                   j   ^  \ rS rSrSS jr\S 5       r\S 5       rS rS r	S r
S rU 4S	 jrS
rU =r$ )FieldOperation	   c                 (    Xl         X l        X0l        g N
model_namenamefield)selfr   r   r   s       WD:\sksbv-state-backend\venv\Lib\site-packages\django/db/migrations/operations/fields.py__init__FieldOperation.__init__
   s    $	
    c                 6    U R                   R                  5       $ r   )r   lowerr   s    r   model_name_lowerFieldOperation.model_name_lower   s    $$&&r   c                 6    U R                   R                  5       $ r   )r   r   r   s    r   
name_lowerFieldOperation.name_lower   s    yy  r   c                 4    U R                   UR                   :H  $ r   )r   r   	operations     r   is_same_model_operation&FieldOperation.is_same_model_operation   s    $$	(B(BBBr   c                 d    U R                  U5      =(       a    U R                  UR                  :H  $ r   )r$   r   r"   s     r   is_same_field_operation&FieldOperation.is_same_field_operation   s,    ((3 89#7#77	
r   c                     UR                  5       nX0R                  :X  a  gU R                  (       a,  [        [	        X R                  4U R                  X#45      5      $ g)NTF)r   r   r   boolr   )r   r   	app_labelr   s       r   references_modelFieldOperation.references_model    sV    ZZ\
...::  5 56JJ+  r   c                 $  ^ UR                  5       nX@R                  :X  a  TU R                  :X  a  gU R                  (       a  [	        U R                  S5      (       a  TU R                  R
                  ;   a  gU R                  R                  (       aC  [        U4S j[        R                  " U R                  R                  5       5       5      (       a  gU R                  c  g[        [        X0R                  4U R                  X44T5      5      $ )NTfrom_fieldsc              3   .   >#    U H  tpUT:H  v   M     g 7fr    ).0
field_name_r   s      r   	<genexpr>2FieldOperation.references_field.<locals>.<genexpr>:   s#      2+
 $&+s   F)r   r   r   r   hasattrr/   	generatedanyr   _get_expr_references
expressionr*   r   )r   r   r   r+   r   s     `  r   references_fieldFieldOperation.references_field.   s    %++-444tyy zzDJJ66

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

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

-	
 	
r   c                    > [         TU ]  X5      =(       d,    UR                  U R                  U R                  U5      (       + $ r   )superreducer<   r   r   r   r#   r+   	__class__s      r   r@   FieldOperation.reduceM   s:    w~i3 
9;U;UOOTYY	<
 8
 	
r   )r   r   r   r   )__name__
__module____qualname____firstlineno__r   r   r   r   r$   r'   r,   r<   r@   __static_attributes____classcell__rB   s   @r   r   r   	   sO    
 ' ' ! !C

>
 
r   r   c                      ^  \ rS rSrSr\R                  rSU 4S jjrS r	S r
S rS rS r\S	 5       rU 4S
 jrSrU =r$ )AddFieldS   zAdd a field to a model.c                 2   > X@l         [        TU ]	  XU5        g r   preserve_defaultr?   r   r   r   r   r   rP   rB   s        r   r   AddField.__init__X        051r   c                     U R                   U R                  U R                  S.nU R                  SLa  U R                  US'   U R                  R
                  / U4$ Nr   TrP   r   r   r   rP   rB   rD   r   kwargss     r   deconstructAddField.deconstruct\   V    //IIZZ

   ,)-)>)>F%&''V44r   c                 ~    UR                  UU R                  U R                  U R                  U R                  5        g r   )	add_fieldr   r   r   rP   r   r+   states      r   state_forwardsAddField.state_forwardsf   s1    !!IIJJ!!	
r   c                    UR                   R                  XR                  5      nU R                  UR                  R
                  U5      (       a  UR                   R                  XR                  5      nUR                  R                  U R                  5      nU R                  (       d  U R                  R                  Ul        UR                  UU5        U R                  (       d  [        Ul        g g g r   )apps	get_modelr   allow_migrate_model
connectionalias_meta	get_fieldr   rP   r   defaultr]   r   )r   r+   schema_editor
from_stateto_stateto_model
from_modelr   s           r   database_forwardsAddField.database_forwardso   s    ==**9ooF##M$<$<$B$BHMM#229ooNJNN,,TYY7E(( $

 2 2## (( , ) Nr   c                    UR                   R                  XR                  5      nU R                  UR                  R
                  U5      (       a5  UR                  XUR                  R                  U R                  5      5        g g r   
rc   rd   r   re   rf   rg   remove_fieldrh   ri   r   r   r+   rk   rl   rm   ro   s         r   database_backwardsAddField.database_backwards}   e    __..y//J
##M$<$<$B$BJOO&&,,66tyyA Pr   c                 >    SU R                   < SU R                  < 3$ )Nz
Add field  to r   r   r   s    r   describeAddField.describe   s    '+yy$//BBr   c                 <    U R                   < SU R                  < 3$ )Nr4   r   r   r   s    r   migration_name_fragment AddField.migration_name_fragment   s    //AAr   c                 b  > [        U[        5      (       a  U R                  U5      (       au  [        U[        5      (       a   [	        U UR
                  UR                  S9/$ [        U[        5      (       a  / $ [        U[        5      (       a  [	        XR                  S9/$ [        TU ]-  X5      $ )N)r   r   r   )
isinstancer   r'   
AlterFieldr   r   r   RemoveFieldRenameFieldnew_namer?   r@   rA   s      r   r@   AddField.reduce   s    i00T5Q5Q6
 6
 )Z00&^^'oo  I{33	I{33+=+=>??w~i33r   rP   T)rD   rE   rF   rG   __doc__r
   ADDITIONcategoryr   rY   r`   rp   rv   r|   propertyr   r@   rH   rI   rJ   s   @r   rL   rL   S   sP    ! ))H25
-C B B4 4r   rL   c                   r   ^  \ rS rSrSr\R                  rS rS r	S r
S rS r\S 5       rU 4S	 jrS
rU =r$ )r      zRemove a field from a model.c                 f    U R                   U R                  S.nU R                  R                  / U4$ )N)r   r   )r   r   rB   rD   rW   s     r   rY   RemoveField.deconstruct   s0    //II
 ''V44r   c                 P    UR                  XR                  U R                  5        g r   )rt   r   r   r^   s      r   r`   RemoveField.state_forwards   s    9&;&;TYYGr   c                    UR                   R                  XR                  5      nU R                  UR                  R
                  U5      (       a5  UR                  XUR                  R                  U R                  5      5        g g r   rs   ru   s         r   rp   RemoveField.database_forwards   rx   r   c                 X   UR                   R                  XR                  5      nU R                  UR                  R
                  U5      (       aZ  UR                   R                  XR                  5      nUR                  XeR                  R                  U R                  5      5        g g r   )
rc   rd   r   re   rf   rg   r]   rh   ri   r   r   r+   rk   rl   rm   rn   ro   s          r   rv   RemoveField.database_backwards   sx    ==**9ooF##M$<$<$B$BHMM#229ooNJ##J0H0H0ST Nr   c                 >    SU R                   < SU R                  < 3$ )NzRemove field z from r{   r   s    r   r|   RemoveField.describe   s    ,0IItGGr   c                 >    SU R                   < SU R                  < 3$ )Nremove_r4   r   r   s    r   r   #RemoveField.migration_name_fragment   s    !%!6!6HHr   c                    > SSK Jn  [        X5      (       a  UR                  U R                  :X  a  U/$ [
        TU ]  X5      $ )Nr   )DeleteModel)modelsr   r   r   r   r?   r@   )r   r#   r+   r   rB   s       r   r@   RemoveField.reduce   s>    ' y..$$(=(==;w~i33r   r1   )rD   rE   rF   rG   r   r
   REMOVALr   rY   r`   rp   rv   r|   r   r   r@   rH   rI   rJ   s   @r   r   r      sM    & ((H5HUH I I4 4r   r   c                      ^  \ rS rSrSr\R                  rSU 4S jjrS r	S r
S rS rS r\S	 5       rU 4S
 jrSrU =r$ )r      zT
Alter a field's database column (e.g. null, max_length) to the provided
new field.
c                 2   > X@l         [        TU ]	  XU5        g r   rO   rQ   s        r   r   AlterField.__init__   rS   r   c                     U R                   U R                  U R                  S.nU R                  SLa  U R                  US'   U R                  R
                  / U4$ rU   rV   rW   s     r   rY   AlterField.deconstruct   r[   r   c                 ~    UR                  UU R                  U R                  U R                  U R                  5        g r   )alter_fieldr   r   r   rP   r^   s      r   r`   AlterField.state_forwards   s3    !!IIJJ!!	
r   c                 :   UR                   R                  XR                  5      nU R                  UR                  R
                  U5      (       a  UR                   R                  XR                  5      nUR                  R                  U R                  5      nUR                  R                  U R                  5      nU R                  (       d  U R                  R                  Ul        UR                  XgU5        U R                  (       d  [        Ul        g g g r   )rc   rd   r   re   rf   rg   rh   ri   r   rP   r   rj   r   r   )	r   r+   rk   rl   rm   rn   ro   
from_fieldto_fields	            r   rp   AlterField.database_forwards   s    ==**9ooF##M$<$<$B$BHMM#229ooNJ#))33DII>J~~//		:H((#'::#5#5 %%jhG((#/  ) Nr   c                 (    U R                  XX45        g r   )rp   )r   r+   rk   rl   rm   s        r   rv   AlterField.database_backwards   s    yNr   c                 >    SU R                   < SU R                  < 3$ )NzAlter field  on r{   r   s    r   r|   AlterField.describe   s    )-DOODDr   c                 >    SU R                   < SU R                  < 3$ )Nalter_r4   r   r   s    r   r   "AlterField.migration_name_fragment   s     $ 5 5tGGr   c                 8  > [        U[        [        45      (       a  U R                  U5      (       a  U/$ [        U[        5      (       aB  U R                  U5      (       a,  U R
                  R                  c  U[        XR                  S9/$ [        TU ])  X5      $ )Nr   )r   r   r   r'   r   r   	db_columnr   r   r?   r@   rA   s      r   r@   AlterField.reduce  s    
K0
 
**955;y+..,,Y77

$$, #5#56  w~i33r   r   r   )rD   rE   rF   rG   r   r
   
ALTERATIONr   r   rY   r`   rp   rv   r|   r   r   r@   rH   rI   rJ   s   @r   r   r      sU    
 !++H25

0OE H H4 4r   r   c                      ^  \ rS rSrSr\R                  rU 4S jr\	S 5       r
\	S 5       rS rS rS rS	 rS
 r\S 5       rS rU 4S jrSrU =r$ )r   i  z8Rename a field on the model. Might affect db_column too.c                 <   > X l         X0l        [        TU ]  X5        g r   )old_namer   r?   r   )r   r   r   r   rB   s       r   r   RenameField.__init__  s      .r   c                 6    U R                   R                  5       $ r   )r   r   r   s    r   old_name_lowerRenameField.old_name_lower      }}""$$r   c                 6    U R                   R                  5       $ r   )r   r   r   s    r   new_name_lowerRenameField.new_name_lower   r   r   c                 |    U R                   U R                  U R                  S.nU R                  R                  / U4$ )N)r   r   r   )r   r   r   rB   rD   rW   s     r   rY   RenameField.deconstruct$  s7    //

 ''V44r   c                 f    UR                  XR                  U R                  U R                  5        g r   )rename_fieldr   r   r   r^   s      r   r`   RenameField.state_forwards,  s%    ,,dmmT]]	
r   c                    UR                   R                  XR                  5      nU R                  UR                  R
                  U5      (       a  UR                   R                  XR                  5      nUR                  UUR                  R                  U R                  5      UR                  R                  U R                  5      5        g g r   )rc   rd   r   re   rf   rg   r   rh   ri   r   r   r   s          r   rp   RenameField.database_forwards1      ==**9ooF##M$<$<$B$BHMM#229ooNJ%%  **4==9((7 Nr   c                    UR                   R                  XR                  5      nU R                  UR                  R
                  U5      (       a  UR                   R                  XR                  5      nUR                  UUR                  R                  U R                  5      UR                  R                  U R                  5      5        g g r   )rc   rd   r   re   rf   rg   r   rh   ri   r   r   r   s          r   rv   RenameField.database_backwards;  r   r   c                 Z    SU R                   < SU R                  < SU R                  < 3$ )NzRename field r   rz   )r   r   r   r   s    r   r|   RenameField.describeE  s!    MMOOMM
 	
r   c                 Z    SU R                   < SU R                  < SU R                  < 3$ )Nrename_r4   )r   r   r   r   s    r   r   #RenameField.migration_name_fragmentL  s)     !!
 	
r   c                     U R                  X5      =(       aA    UR                  5       U R                  :H  =(       d    UR                  5       U R                  :H  $ r   )r,   r   r   r   )r   r   r   r+   s       r   r<   RenameField.references_fieldT  sD    $$Z; 
JJLD///V4::<4CVCV3V	
r   c                   > [        U[        5      (       aD  U R                  U5      (       a.  U R                  UR                  :X  a  [        XR                  S9/$ [        [        U ]'  X5      =(       dZ    UR                  U R                  U R                  U5      =(       d'    UR                  U R                  U R                  U5      (       + $ )N)r   )r   r   r$   r   r   r   r   r?   r   r@   r<   r   r   rA   s      r   r@   RenameField.reduceY  s    y+..,,Y77##y'?'??D+=+=>?? ^T1)G 
&&tyQ U))$//4==)TL
 	
r   )r   r   )rD   rE   rF   rG   r   r
   r   r   r   r   r   r   rY   r`   rp   rv   r|   r   r   r<   r@   rH   rI   rJ   s   @r   r   r     sz    B ++H/
 % % % %5

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


 
r   r   N)django.db.migrations.utilsr   django.db.modelsr   r   django.utils.copyr   django.utils.functionalr   baser	   r
   r   rL   r   r   r   r1   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   