
    g                     d    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 dgZ G d de      Zy	)
    )checks)connectionsrouter)Query)cached_property   )NOT_PROVIDEDFieldGeneratedFieldc                        e Zd ZdZdZdZdZdd fd
Zed        Z	d fd	Z
 fdZd Z fd	Zd
 Zd Z fdZd Zd Zd Z xZS )r   TN)
db_persistc                |   |j                  dd      rt        d      |j                  dd      st        d      |j                  dt              t        urt        d      |j                  d	t              t        urt        d
      |dvrt        d      || _        || _        || _        t        |    di | y )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. )	
setdefault
ValueErrorgetr	   
expressionoutput_fieldr   super__init__)selfr   r   r   kwargs	__class__s        y/var/www/python.vincentserveurtest.ovh/public_html/venv/lib/python3.12/site-packages/django/db/models/fields/generated.pyr   zGeneratedField.__init__   s    Z/ABB  $/<==::i.lBDEE::lL1EMNN]*OPP$($"6"    c                 r    ddl m}  || j                  j                  j                  | | j
                        S )Nr   )Col)django.db.models.expressionsr!   model_metadb_tabler   )r   r!   s     r   
cached_colzGeneratedField.cached_col#   s*    44::##,,dD4E4EFFr   c                     || j                   j                  j                  k7  r|d | fv r| j                  }t        |   ||      S N)r#   r$   r%   r   r   get_col)r   aliasr   r   s      r   r)   zGeneratedField.get_col)   sB    DJJ$$---,4,2N,,Lwul33r   c                     t        |   |i | t        | j                  d      | _        | j
                  j                         j                         D ]  \  }}| j                  ||        y )NF)r#   
alias_cols)lookup_name)	r   contribute_to_classr   r#   _queryr   get_class_lookupsitemsregister_lookup)r   argsr   r-   lookupr   s        r   r.   z"GeneratedField.contribute_to_class.   sb    #T4V4$**?#'#4#4#F#F#H#N#N#PK  [ A $Qr   c                 B    |j                   j                  d      | j                  |d       }| j                  j	                  | j                  d      }|j                  |      \  }}t        | j                  dd      r|j                  j                  sd| d}||fS )NSQLCompiler)
connectionusingF)allow_joinsconditionalz
CASE WHEN z THEN 1 ELSE 0 END)	opscompilerr/   r   resolve_expressioncompilegetattrfeatures&supports_boolean_expr_in_select_clause)r   r7   r<   resolved_expressionsqlparamss         r   generated_sqlzGeneratedField.generated_sql6   s    9:>>**=9KKJd
 #oo@@KKU A 
 &&':;VDOO]E:''NNse#56CF{r   c                 2   |j                  d      xs g }g t        	|   di || j                  |      | j	                  |      }| j
                  j                         }| j                  |_        |j                  |      }|rd}|j                  d |D              }|r,|j                  t        j                  d| | | d             |j                  d |D              }|r,|j                  t        j                  d	| | | d
             |S )N	databases)rG   z
    c              3      K   | ]:  }t        |t        j                        r|j                   d |j                   d < ywz ()N)
isinstancer   Errormsgid.0output_checks     r   	<genexpr>z'GeneratedField.check.<locals>.<genexpr>Q   s?      ,$7LlFLL9  ##$B|&7q9$7   A Az'GeneratedField.output_field has errors:zfields.E223objrN   c              3      K   | ]:  }t        |t        j                        r|j                   d |j                   d < ywrI   )rK   r   WarningrM   rN   rO   s     r   rR   z'GeneratedField.check.<locals>.<genexpr>_   s?      .$7LlFNN;  ##$B|&7q9$7rS   z)GeneratedField.output_field has warnings:zfields.W224r   )r   r   check_check_supported_check_persistencer   cloner#   joinappendr   rL   rW   )
r   r   rG   errorsoutput_field_cloneoutput_field_checks	separatorerror_messageswarning_messagesr   s
            r   rX   zGeneratedField.checkE   sD   JJ{+1r	
W]$V$
""9-
 $$Y/

 "..446#':: 0666K I&^^ ,$7, N
 LLA$+n%57 (	  )~~ .$7.  
  NNC$+&6%79 (	 r   c                 \   g }|D ]#  }t        j                  || j                        s%t        |   }| j                  j                  j
                  r.| j                  j                  j
                  |j                  k7  r||j                  j                  rd| j                  j                  j                  v r|j                  j                  rd| j                  j                  j                  v r|j                  t        j                  |j                   d| d             & |S )N!supports_stored_generated_columns"supports_virtual_generated_columnsz" does not support GeneratedFields.zfields.E220rT   )r   allow_migrate_modelr#   r   r$   required_db_vendorvendorr@   rf   required_db_featuresre   r]   r   rL   display_namer   rG   r^   dbr7   s        r   rY   zGeneratedField._check_supportedo   s    B--b$**=$RJ

  33JJ$$77:;L;LL##FF6::##889 ##EE7::##889 LL%2233UV (% 2 r   c           	         g }|D ]s  }t        j                  || j                        s%t        |   }| j                  j                  j
                  r.| j                  j                  j
                  |j                  k7  r|| j                  sm|j                  j                  sWd| j                  j                  j                  v s5|j                  t        j                  |j                   d| dd             | j                  s|j                  j                  rd| j                  j                  j                  v r?|j                  t        j                  |j                   d| dd	             v |S )
Nrf   z0 does not support non-persisted GeneratedFields.zfields.E221z!Set db_persist=True on the field.)rU   rN   hintre   z, does not support persisted GeneratedFields.zfields.E222z"Set db_persist=False on the field.)r   rg   r#   r   r$   rh   ri   r   r@   rf   rj   r]   r   rL   rk   re   rl   s        r   rZ   z!GeneratedField._check_persistence   sC   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6::##889 LL%223 4+ + (A9 J r   c                     t         |          \  }}}}|d= |d= | j                  |d<   | j                  |d<   | j                  |d<   ||||fS )Nr   r   r   r   r   )r   deconstructr   r   r   )r   namepathr3   r   r   s        r   rq   zGeneratedField.deconstruct   sc    #(7#6#8 dD&7O:#|#|!%!2!2~T4''r   c                 6    | j                   j                         S r(   )r   get_internal_type)r   s    r   ru   z GeneratedField.get_internal_type   s      2244r   c                 8    | j                   j                  |      S r(   )r   db_parametersr   r7   s     r   rw   zGeneratedField.db_parameters   s      ..z::r   c                 8    | j                   j                  |      S r(   )r   db_type_parametersrx   s     r   rz   z!GeneratedField.db_type_parameters   s      33J??r   r(   )__name__
__module____qualname__	generateddb_returningr/   r   r   r   r&   r)   r.   rE   rX   rY   rZ   rq   ru   rw   rz   __classcell__)r   s   @r   r   r      sk    ILFL?C #" G G
4
B(T:'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 !
z@U z@r   