
    j!                     d    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/r " S S\5      rg	)
    )checks)connectionsrouter)Query)cached_property   )NOT_PROVIDEDFieldGeneratedFieldc                      ^  \ rS rSrSrSrSrSrU 4S jr\	S 5       r
SU 4S jjrU 4S jrS r\	S	 5       rU 4S
 jrS rS rS rU 4S jrS rS rS rSrU =r$ )r      TNc                  > UR                  SS5      (       a  [        S5      eUR                  SS5      (       d  [        S5      eUR                  S[        5      [        La  [        S5      eUR                  S	[        5      [        La  [        S
5      eUS;  a  [        S5      eXl        X l        X0l        SU;   U l        [        TU ]$  " S0 UD6  g )NeditableFz"GeneratedField cannot be editable.blankTzGeneratedField must be blank.defaultz%GeneratedField cannot have a default.
db_defaultz.GeneratedField cannot have a database default.)TFz0GeneratedField.db_persist must be True or False.null )

setdefault
ValueErrorgetr	   
expressionoutput_field
db_persisthas_null_argsuper__init__)selfr   r   r   kwargs	__class__s        Y/var/www/html/KUNJ/venv/lib/python3.13/site-packages/django/db/models/fields/generated.pyr   GeneratedField.__init__   s    Z//ABB  $//<==::i.lBDEE::lL1EMNN]*OPP$($"f,"6"    c                 p    SSK Jn  U" U R                  R                  R                  X R
                  5      $ )Nr   )Col)django.db.models.expressionsr%   model_metadb_tabler   )r   r%   s     r!   
cached_colGeneratedField.cached_col$   s(    44::##,,d4E4EFFr#   c                    > XR                   R                  R                  :w  a  US U 4;   a  U R                  n[        TU ]  X5      $ N)r'   r(   r)   r   r   get_col)r   aliasr   r    s      r!   r.   GeneratedField.get_col*   s>    JJ$$---,4,2N,,Lwu33r#   c                    > [         TU ]  " U0 UD6  [        U R                  SS9U l        U R
                  R                  5       R                  5        H  u  p4U R                  XCS9  M     g )NF)r'   
alias_cols)lookup_name)	r   contribute_to_classr   r'   _queryr   get_class_lookupsitemsregister_lookup)r   argsr   r3   lookupr    s        r!   r4   "GeneratedField.contribute_to_class/   s^    #T4V4$**?#'#4#4#F#F#H#N#N#PK   A $Qr#   c                 F   UR                   R                  S5      " U R                  US S9nU R                  R	                  U R                  SS9nUR                  U5      u  pE[        U R                  SS5      (       a!  UR                  R                  (       d  SU S3nXE4$ )NSQLCompiler)
connectionusingFallow_joinsconditionalz
CASE WHEN z THEN 1 ELSE 0 END)	opscompilerr5   r   resolve_expressioncompilegetattrfeatures&supports_boolean_expr_in_select_clause)r   r>   rD   resolved_expressionsqlparamss         r!   generated_sqlGeneratedField.generated_sql7   s    >>**=9KKJd
 #oo@@KKU A 
 &&':;DOO]E::''NNse#56C{r#   c                     U R                   R                  U R                  SS9n/ nU R                  R                  U/5       H  nUR	                  UR
                  5        M      [        U5      $ )NFr@   )r   rE   r5   	_gen_colsappendtarget	frozenset)r   rJ   referenced_fieldscols       r!   rT    GeneratedField.referenced_fieldsF   sj    "oo@@KKU A 
 ;;((*=)>?C$$SZZ0 @*++r#   c                 p  > UR                  S5      =(       d    / n/ [        T	U ]  " S0 UD6QU R                  U5      QU R	                  U5      QU R                  U5      QnU R                  R                  5       nU R                  Ul        UR                  US9nU(       a  SnUR                  S U 5       5      nU(       a*  UR                  [        R                  " SU U 3U SS95        UR                  S U 5       5      nU(       a*  UR                  [        R                  " S	U U 3U S
S95        U$ )N	databases)rX   z
    c              3      #    U  HB  n[        U[        R                  5      (       d  M$  UR                   S UR                   S3v   MD     g7fz ()N)
isinstancer   Errormsgid.0output_checks     r!   	<genexpr>'GeneratedField.check.<locals>.<genexpr>]   s@      ,$7LlFLL9 :<##$B|&7q9$7
   #A#Az'GeneratedField.output_field has errors:zfields.E223objr_   c              3      #    U  HB  n[        U[        R                  5      (       d  M$  UR                   S UR                   S3v   MD     g7frZ   )r\   r   Warningr^   r_   r`   s     r!   rc   rd   k   s@      .$7LlFNN; :<##$B|&7q9$7re   z)GeneratedField.output_field has warnings:zfields.W224r   )r   r   check_check_supported_check_persistence_check_ignored_optionsr   cloner'   joinrQ   r   r]   ri   )
r   r   rX   errorsoutput_field_cloneoutput_field_checks	separatorerror_messageswarning_messagesr    s
            r!   rj   GeneratedField.checkP   sY   JJ{+1r	
W]$V$
""9-
 $$Y/
 ((3	
 "..446#':: 0666K I&^^ ,$7, N
 LLA$+n%57 (	  )~~ .$7.  
  NNC$+&6%79 (	 r#   c           	         / nU GHB  n[         R                  " X0R                  5      (       d  M+  [        U   nU R                  R                  R
                  (       a0  U R                  R                  R
                  UR                  :w  a  M  UR                  R                  (       a  M  SU R                  R                  R                  ;   a  M  UR                  R                  (       a  M  SU R                  R                  R                  ;   a  GM  UR                  [        R                  " UR                   S3U SS95        GME     U$ )N!supports_stored_generated_columns"supports_virtual_generated_columnsz" does not support GeneratedFields.zfields.E220rf   )r   allow_migrate_modelr'   r   r(   required_db_vendorvendorrH   ry   required_db_featuresrx   rQ   r   r]   display_namer   rX   rp   dbr>   s        r!   rk   GeneratedField._check_supported{   s    B--b**==$RJ

  33JJ$$77:;L;LL##FFF6::##889 ##EEE7::##889 LL%2233UV (% 2 r#   c           
      H   / nU GH  n[         R                  " X0R                  5      (       d  M+  [        U   nU R                  R                  R
                  (       a0  U R                  R                  R
                  UR                  :w  a  M  U R                  (       dr  UR                  R                  (       dW  SU R                  R                  R                  ;   d3  UR                  [        R                  " UR                   S3U SSS95        U R                  (       d  GM   UR                  R                  (       a  GM>  SU R                  R                  R                  ;   a  GMe  UR                  [        R                  " UR                   S3U SS	S95        GM     U$ )
Nry   z0 does not support non-persisted GeneratedFields.zfields.E221z!Set db_persist=True on the field.)rg   r_   hintrx   z, does not support persisted GeneratedFields.zfields.E222z"Set db_persist=False on the field.)r   rz   r'   r   r(   r{   r|   r   rH   ry   r}   rQ   r   r]   r~   rx   r   s        r!   rl   !GeneratedField._check_persistence   sI   B--b**==$RJ

  33JJ$$77:;L;LL??##FF7::##889 LL%223 4+ + (@ ##EEE6::##889 LL%223 4+ + (A9 J r#   c                 v    / nU R                   (       a%  UR                  [        R                  " SU SS95        U$ )Nz%null has no effect on GeneratedField.zfields.W225rf   )r   rQ   r   ri   )r   rX   warningss      r!   rm   %GeneratedField._check_ignored_options   s8    OO;$ r#   c                    > [         TU ]  5       u  pp4US	 US	 U R                  US'   U R                  US'   U R                  US'   XX44$ )Nr   r   r   r   r   )r   deconstructr   r   r   )r   namepathr9   r   r    s        r!   r   GeneratedField.deconstruct   s[    #(7#6#8 D7O:#|#|!%!2!2~4''r#   c                 6    U R                   R                  5       $ r-   )r   get_internal_type)r   s    r!   r    GeneratedField.get_internal_type   s      2244r#   c                 8    U R                   R                  U5      $ r-   )r   db_parametersr   r>   s     r!   r   GeneratedField.db_parameters   s      ..z::r#   c                 8    U R                   R                  U5      $ r-   )r   db_type_parametersr   s     r!   r   !GeneratedField.db_type_parameters   s      33J??r#   )r5   r   r   r   r   r-   )__name__
__module____qualname____firstlineno__	generateddb_returningr5   r   r   r   r*   r.   r4   rM   rT   rj   rk   rl   rm   r   r   r   r   __static_attributes____classcell__)r    s   @r!   r   r      s    ILFL#$ G G
4
B , ,)V:'R(5;@ @r#   N)django.corer   	django.dbr   r   django.db.models.sqlr   django.utils.functionalr    r	   r
   __all__r   r   r#   r!   <module>r      s,     ) & 3 !
T@U T@r#   