
    afJ                     $   d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	 d dl
mZmZmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ g dZ G d d          Z G d de          Z  G d de          Z! G d de          Z"dS )    N)Enum)NoneType)
FieldErrorValidationError)connections)ExistsExpressionListFOrderBy)IndexExpression)Exact)Q)Query)DEFAULT_DB_ALIAS)RemovedInDjango60Warning)gettext_lazy)BaseConstraintCheckConstraint
DeferrableUniqueConstraintc                       e Zd Z ed          ZdZdZdddddZed             Z	d Z
d Zd Zdefd	Zd
 Zd Zd ZdS )r   u&   Constraint “%(name)s” is violated.Nnameviolation_error_codeviolation_error_messagec                D   ||st          | j        j         d          || _        ||| _        ||| _        n| j        | _        |rUt          j        d| j        j         dt          d           t          |ddg          D ]\  }}|rt          | ||           d S d S )Nz<.__init__() missing 1 required keyword-only argument: 'name'z Passing positional arguments to z is deprecated.   )
stacklevelr   r   )	TypeError	__class____name__r   r   r   default_violation_error_messagewarningswarnr   zipsetattr)selfr   r   r   argsargattrs          N/var/www/html/env/lib/python3.11/site-packages/django/db/models/constraints.py__init__zBaseConstraint.__init__   s     <<>* $ $ $   	+(<D%".+BD((+/+OD( 		-M4>3J   (	    !0I'JKK - -	T -D$,,,		- 		-- -    c                     dS )NF r'   s    r+   contains_expressionsz#BaseConstraint.contains_expressions8   s    ur-   c                      t          d          Nz.This method must be implemented by a subclass.NotImplementedErrorr'   modelschema_editors      r+   constraint_sqlzBaseConstraint.constraint_sql<       !"RSSSr-   c                      t          d          r3   r4   r6   s      r+   
create_sqlzBaseConstraint.create_sql?   r:   r-   c                      t          d          r3   r4   r6   s      r+   
remove_sqlzBaseConstraint.remove_sqlB   r:   r-   c                      t          d          r3   r4   )r'   r7   instanceexcludeusings        r+   validatezBaseConstraint.validateE   r:   r-   c                 $    | j         d| j        iz  S )Nr   )r   r   r0   s    r+   get_violation_error_messagez*BaseConstraint.get_violation_error_messageH   s    +vty.AAAr-   c                     | j         j        d| j         j        }|                    dd          }d| j        i}| j        | j        | j        k    r
| j        |d<   | j        
| j        |d<   |d|fS )N.zdjango.db.models.constraintszdjango.db.modelsr   r   r   r/   )r    
__module__r!   replacer   r   r"   r   )r'   pathkwargss      r+   deconstructzBaseConstraint.deconstructK   s    .333T^5L5LM||:<NOO$)$(4,0TTT040LF,-$0-1-FF)*b&!!r-   c                 L    |                                  \  }}} | j        |i |S N)rL   r    )r'   _r(   rK   s       r+   clonezBaseConstraint.cloneX   s0    **,,4t~t.v...r-   )r!   rH   __qualname__rO   r"   r   r   r,   propertyr1   r9   r<   r>   r   rC   rE   rL   rP   r/   r-   r+   r   r      s        &'a(P&Q&Q#" TSW- - - - -8   XT T TT T TT T T 15<L T T T TB B B" " "/ / / / /r-   r   c                   d     e Zd Zddd fd
Zd Zd Zd Zd ZdefdZ	d	 Z
 fd
Z fdZ xZS )r   N)r   r   c                    || _         t          |dd          st          d          t                                          |||           d S )NconditionalFzACheckConstraint.check must be a Q instance or boolean expression.r   )checkgetattrr   superr,   )r'   rV   r   r   r   r    s        r+   r,   zCheckConstraint.__init__^   sk     
umU33 	S   	!5$; 	 	
 	
 	
 	
 	
r-   c                    t          |d          }|                    | j                  }|                    j                  }|                    |j                  \  }}|t          fd|D                       z  S )NFr7   
alias_cols
connectionc              3   B   K   | ]}                     |          V  d S rN   quote_value.0pr8   s     r+   	<genexpr>z1CheckConstraint._get_check_sql.<locals>.<genexpr>q   1      HHA=44Q77HHHHHHr-   )r   build_whererV   get_compilerr]   as_sqltupler'   r7   r8   querywherecompilersqlparamss     `     r+   _get_check_sqlzCheckConstraint._get_check_sqll   s    Ee444!!$*--%%1I%JJll8]-EFFVUHHHHHHHHHHHr-   c                 d    |                      ||          }|                    | j        |          S rN   )rp   
_check_sqlr   r'   r7   r8   rV   s       r+   r9   zCheckConstraint.constraint_sqls   s/    ##E=99''	5999r-   c                 f    |                      ||          }|                    || j        |          S rN   )rp   _create_check_sqlr   rs   s       r+   r<   zCheckConstraint.create_sqlw   s1    ##E=99..udiGGGr-   c                 8    |                     || j                  S rN   )_delete_check_sqlr   r6   s      r+   r>   zCheckConstraint.remove_sql{   s    ..udi@@@r-   c                    |                     |j        |          }	 t          | j                                      ||          s(t	          |                                 | j                  d S # t          $ r Y d S w xY w)NmetarA   rB   code)_get_field_value_map_metar   rV   r   rE   r   r   )r'   r7   r@   rA   rB   againsts         r+   rC   zCheckConstraint.validate~   s    //U['/RR	TZ==&&we&<< %4466T=V      	 	 	DD	s   AA1 1
A?>A?c           	          d| j         j        d| j        dt          | j                  | j        dn	d| j        z  | j        | j        | j        k    rdn	d| j        z  d	S )N<z: check=z name=  violation_error_code=%r violation_error_message=%r>)r    rQ   rV   reprr   r   r   r"   r0   s    r+   __repr__zCheckConstraint.__repr__   s     N'''JJJOOO ,4 /$2KKL /7/43WWW  3T5QQR R
 	
r-   c                     t          |t                    r@| j        |j        k    o/| j        |j        k    o| j        |j        k    o| j        |j        k    S t                                          |          S rN   )
isinstancer   r   rV   r   r   rX   __eq__r'   otherr    s     r+   r   zCheckConstraint.__eq__   sz    e_-- 		UZ' RJ%+-R-1KKR 0E4QQ	 ww~~e$$$r-   c                 j    t                                                      \  }}}| j        |d<   |||fS )NrV   )rX   rL   rV   r'   rJ   r(   rK   r    s       r+   rL   zCheckConstraint.deconstruct   s7    "WW0022dF*wT6!!r-   )r!   rH   rQ   r,   rp   r9   r<   r>   r   rC   r   r   rL   __classcell__r    s   @r+   r   r   ]   s        37QU
 
 
 
 
 
 
I I I: : :H H HA A A 15<L    
 
 
$% % % % %" " " " " " " " "r-   r   c                       e Zd ZdZdZd ZdS )r   deferred	immediatec                 .    | j         j         d| j         S )NrG   )r    rQ   _name_r0   s    r+   r   zDeferrable.__repr__   s    .-=====r-   N)r!   rH   rQ   DEFERRED	IMMEDIATEr   r/   r-   r+   r   r      s-        HI> > > > >r-   r   c            
            e Zd Zdddddddddd	 fd
Zed             Zd Zd Zd Zd	 Z	d
 Z
d Z fdZ fdZdefdZ xZS )r   r/   N)	fieldsr   	condition
deferrableinclude	opclassesnulls_distinctr   r   c       	         d   |st          d          |
s|st          d          |
r|rt          d          t          |t          t          f          st          d          |r|rt          d          |r|rt          d          |r|rt          d          |
r|rt          d          |
r|rt          d	          t          |t          t          f          st          d
          t          |t          t          t          f          st          d          t          |t          t          f          st          d          t          |t          t          f          st          d          |r/t          |          t          |          k    rt          d          t          |          | _
        || _        || _        |rt          |          nd| _        || _        || _        t          d |
D                       | _        t#                                          |||	           d S )Nz"A unique constraint must be named.zKAt least one field or expression is required to define a unique constraint.z?UniqueConstraint.fields and expressions are mutually exclusive.z0UniqueConstraint.condition must be a Q instance.z4UniqueConstraint with conditions cannot be deferred.z8UniqueConstraint with include fields cannot be deferred.z3UniqueConstraint with opclasses cannot be deferred.z5UniqueConstraint with expressions cannot be deferred.zrUniqueConstraint.opclasses cannot be used with expressions. Use django.contrib.postgres.indexes.OpClass() instead.z:UniqueConstraint.deferrable must be a Deferrable instance.z1UniqueConstraint.include must be a list or tuple.z3UniqueConstraint.opclasses must be a list or tuple.z/UniqueConstraint.nulls_distinct must be a bool.z]UniqueConstraint.fields and UniqueConstraint.opclasses must have the same number of elements.r/   c              3   b   K   | ]*}t          |t                    rt          |          n|V  +d S rN   )r   strr
   )rb   
expressions     r+   rd   z,UniqueConstraint.__init__.<locals>.<genexpr>   sO       !
 !
 (
C88HAjMMMj!
 !
 !
 !
 !
 !
r-   r   )
ValueErrorr   r   r   r   r   listri   boollenr   r   r   r   r   r   expressionsrX   r,   )r'   r   r   r   r   r   r   r   r   r   r   r    s              r+   r,   zUniqueConstraint.__init__   s     	CABBB 	6 	%    	6 	Q   )h]33 	QOPPP 	U 	USTTT 	Yz 	YWXXX 	T 	TRSSS 	V: 	VTUUU 	9 	I   *x&<== 	L   'HdE#:;; 	QOPPP)dE]33 	SQRRR.8T*:;; 	OMNNN 	VI664   Fmm"$)08uW~~~b",  !
 !
)!
 !
 !
 
 
 	!5$; 	 	
 	
 	
 	
 	
r-   c                 *    t          | j                  S rN   )r   r   r0   s    r+   r1   z%UniqueConstraint.contains_expressions   s    D$%%%r-   c                    | j         d S t          |d          }|                    | j                   }|                    j                  }|                    |j                  \  }}|t          fd|D                       z  S )NFrZ   r\   c              3   B   K   | ]}                     |          V  d S rN   r_   ra   s     r+   rd   z6UniqueConstraint._get_condition_sql.<locals>.<genexpr>  re   r-   )r   r   rf   rg   r]   rh   ri   rj   s     `     r+   _get_condition_sqlz#UniqueConstraint._get_condition_sql   s    >!4Ee444!!$.11%%1I%JJll8]-EFFVUHHHHHHHHHHHr-   c                     | j         sd S g }| j         D ]@}t          |          }|                    |j                   |                    |           At          |                     t          |d                    S )NF)r[   )r   r   set_wrapper_classesr]   appendr	   resolve_expressionr   )r'   r7   r8   index_expressionsr   index_expressions         r+   _get_index_expressionsz'UniqueConstraint._get_index_expressions  s     	4* 	7 	7J.z::001IJJJ$$%5666601DD%E***
 
 	
r-   c                    fd| j         D             }fd| j        D             }|                     |          }|                     |          }|                    || j        || j        || j        || j        	  	        S )Nc                 D    g | ]}j                             |          S r/   r   	get_fieldrb   
field_namer7   s     r+   
<listcomp>z3UniqueConstraint.constraint_sql.<locals>.<listcomp>  )    RRR
%+''
33RRRr-   c                 N    g | ]!}j                             |          j        "S r/   r   r   columnr   s     r+   r   z3UniqueConstraint.constraint_sql.<locals>.<listcomp>  9     
 
 
9CEK!!*--4
 
 
r-   r   r   r   r   r   r   )	r   r   r   r   _unique_sqlr   r   r   r   r'   r7   r8   r   r   r   r   s    `     r+   r9   zUniqueConstraint.constraint_sql  s    RRRRdkRRR
 
 
 
GK|
 
 
 ++E=AA	11%GG((In#. ) 

 

 
	
r-   c                    fd| j         D             }fd| j        D             }|                     |          }|                     |          }|                    || j        || j        || j        || j        	  	        S )Nc                 D    g | ]}j                             |          S r/   r   r   s     r+   r   z/UniqueConstraint.create_sql.<locals>.<listcomp>'  r   r-   c                 N    g | ]!}j                             |          j        "S r/   r   r   s     r+   r   z/UniqueConstraint.create_sql.<locals>.<listcomp>(  r   r-   r   )	r   r   r   r   _create_unique_sqlr   r   r   r   r   s    `     r+   r<   zUniqueConstraint.create_sql&  s    RRRRdkRRR
 
 
 
GK|
 
 
 ++E=AA	11%GG//In#. 0 

 

 
	
r-   c           
          |                      |          }fd| j        D             }|                     |          }|                    | j        || j        || j        || j                  S )Nc                 N    g | ]!}j                             |          j        "S r/   r   r   s     r+   r   z/UniqueConstraint.remove_sql.<locals>.<listcomp>;  r   r-   r   )r   r   r   _delete_unique_sqlr   r   r   r   )r'   r7   r8   r   r   r   s    `    r+   r>   zUniqueConstraint.remove_sql9  s    ++E=AA	
 
 
 
GK|
 
 
 11%GG//In#. 0 	
 	
 		
r-   c                 0   d| j         j        d| j        sdndt          | j                  z  | j        sdndt          | j                  z  dt          | j                  z  | j        dn	d| j        z  | j        dn	d| j        z  | j        sdnd	t          | j                  z  | j	        sdnd
t          | j	                  z  | j
        dn	d| j
        z  | j        dn	d| j        z  | j        | j        | j        k    rdn	d| j        z  dS )Nr   :r   z
 fields=%sz expressions=%sz name=%sz condition=%sz deferrable=%rz include=%sz opclasses=%sz nulls_distinct=%rr   r   r   )r    rQ   r   r   r   r   r   r   r   r   r   r   r   r"   r0   s    r+   r   zUniqueConstraint.__repr__J  se    N'''kGBB|d4;6G6G'GG&VBB,=TEU@V@V,VVdi((.(BBo.NN/)BB/?$//QQlJBBT\8J8J(JJnPBB/D<P<P*PP &. )D,??@ ,4 /$2KKL /7/43WWW  3T5QQR R)
 	
r-   c                    t          |t                    r| j        |j        k    o| j        |j        k    o}| j        |j        k    om| j        |j        k    o]| j        |j        k    oM| j        |j        k    o=| j        |j        k    o-| j	        |j	        u o| j
        |j
        k    o| j        |j        k    S t                                          |          S rN   )r   r   r   r   r   r   r   r   r   r   r   r   rX   r   r   s     r+   r   zUniqueConstraint.__eq__f  s    e-.. 		UZ' 	RK5</	RNeo5	R Ou'77	R LEM1		R
 Neo5	R $(99	R '5+??	R -1KK	R 0E4QQ ww~~e$$$r-   c                 ,   t                                                      \  }}}| j        r
| j        |d<   | j        r
| j        |d<   | j        r
| j        |d<   | j        r
| j        |d<   | j        r
| j        |d<   | j        
| j        |d<   || j        |fS )Nr   r   r   r   r   r   )	rX   rL   r   r   r   r   r   r   r   r   s       r+   rL   zUniqueConstraint.deconstructv  s    "WW0022dF; 	+#{F8> 	1"&.F;? 	3#'?F< < 	- $F9> 	1"&.F;*'+':F#$T%v--r-   c           	      h   |j                             |          }| j        ri }| j        D ]o}|r||v r d S |j                            |          }t          ||j                  }	| j        dur|	|	dk    rt          |         j	        j
        r d S |	||j        <   p |j        d	i |}n|ru| j        D ]m}
t          |
d          r:|
                                D ]$}t!          |t"                    r|j        |v r  d S %Lt!          |
t"                    r|
j        |v r d S nd |                    |j        |                                          D             }g }| j        D ]T}t!          |t(                    r|j        }|                    t/          ||                    |                               U |j        | }|                    |j                  }|j        j        s||                    |          }| j        s|                                rz| j        r(t?          |                                  | j!                  |"                                D ]8\  }}|D ].}|| u r(t?          |#                    || j                            /7d S d S |                    |j        |          }	 | j        tI          |                    | j                            z  %                    ||          r(t?          |                                  | j!                  d S # tL          $ r Y d S w xY w)
NFr   flattenc                 4    i | ]\  }}t          |          |S r/   )r
   )rb   fieldvalues      r+   
<dictcomp>z-UniqueConstraint.validate.<locals>.<dictcomp>  s4        E5 %%  r-   ry   )pkr|   r{   r/   )'_default_managerrB   r   r   r   rW   attnamer   r   features!interprets_empty_strings_as_nullsr   filterr   hasattrr   r   r
   r~   itemsr   r   r   r   replace_expressions_get_pk_val_stateaddingrA   r   existsr   rE   r   get_constraintsunique_error_messager   rV   r   )r'   r7   r@   rA   rB   querysetlookup_kwargsr   r   lookup_valuer   exprreplacementsr   model_class_pkconstraints
constraintr   s                     r+   rC   zUniqueConstraint.validate  s   )//66; ,	5M"k 9 9
 zW44FF--j99&x??'u44$,$**'!"#D + FF,8ej))&x7777HH  "&"2  Jz955 $.$6$6$8$8 ' 'D)$22 'tyG7K7K &' $J22 z'7Q7Q $,$A$Ag %B % %%''	  L K( X XdG,, +?D""5t/G/G/U/U#V#VWWWW&x4H!--ek::% 	;.*D''>'::H~ 	   # )88::!6    +3*B*B*D*D  &E;&1  
%--"1 ( = =eT[ Q Q# #  .   33g3VVG	NVHOODN,K,K%L%LLSS5 T    *88::!6        s   5A,L# #
L10L1)r!   rH   rQ   r,   rR   r1   r   r   r9   r<   r>   r   r   rL   r   rC   r   r   s   @r+   r   r      s5        ! $D
 D
 D
 D
 D
 D
 D
L & & X&I I I

 

 


 
 
&
 
 
&
 
 
"
 
 
8% % % % % . . . . .  15<L L L L L L L L Lr-   r   )#r#   enumr   typesr   django.core.exceptionsr   r   	django.dbr   django.db.models.expressionsr   r	   r
   r   django.db.models.indexesr   django.db.models.lookupsr   django.db.models.query_utilsr   django.db.models.sql.queryr   django.db.utilsr   django.utils.deprecationr   django.utils.translationr   rO   __all__r   r   r   r   r/   r-   r+   <module>r      s                > > > > > > > > ! ! ! ! ! ! K K K K K K K K K K K K 4 4 4 4 4 4 * * * * * * * * * * * * , , , , , , , , , , , , = = = = = = 6 6 6 6 6 6
Q
Q
QG/ G/ G/ G/ G/ G/ G/ G/TJ" J" J" J" J"n J" J" J"Z> > > > > > > >_ _ _ _ _~ _ _ _ _ _r-   