
    af-                     4   d dl mZmZmZ d dlmZmZ d dlmZm	Z	m
Z
 d dlmZ d dl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 G d de          Z G d de          Z G d de          Z G d de          Z G d d          Z G d dee	          Z G d dee
          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d(S ))    )get_citext_oidsget_hstore_oidsregister_type_handlers)NotSupportedErrorrouter)AddConstraintAddIndexRemoveIndex)	Operation)CheckConstraintc                   L    e Zd ZdZd Zd Zd Zd Zd Zd Z	e
d             Zd	S )
CreateExtensionTc                     || _         d S Nname)selfr   s     T/var/www/html/env/lib/python3.11/site-packages/django/contrib/postgres/operations.py__init__zCreateExtension.__init__   s    			    c                     d S r    r   	app_labelstates      r   state_forwardszCreateExtension.state_forwards       r   c                    |j         j        dk    st          j        |j         j        |          sd S |                     || j                  s0|                    d|                    | j                  z             t          j
                     t          j
                     t          |j                    t          |j         d          r'|j                             |j         j         d           d S d S )N
postgresqlz!CREATE EXTENSION IF NOT EXISTS %sregister_geometry_adaptersT)
connectionvendorr   allow_migratealiasextension_existsr   execute
quote_namer   cache_clearr   r   hasattrr    r   r   schema_editor
from_stateto_states        r   database_forwardsz!CreateExtension.database_forwards   s	   #*l::&BV$*IC
 C
: F$$]DI>> 	!!3**49556  
 	#%%%#%%% 	}7888=+-IJJ 	$??(3T    	 	r   c                 *   t          j        |j        j        |          sd S |                     || j                  r0|                    d|                    | j                  z             t          j	                     t          j	                     d S )NzDROP EXTENSION IF EXISTS %s)r   r#   r!   r$   r%   r   r&   r'   r   r(   r   r*   s        r   database_backwardsz"CreateExtension.database_backwards+   s    #M$<$BINN 	F  	:: 	!!-0H0H0S0SS   	#%%%#%%%%%r   c                     |j                                         5 }|                    d|g           t          |                                          cd d d            S # 1 swxY w Y   d S )Nz-SELECT 1 FROM pg_extension WHERE extname = %s)r!   cursorr&   boolfetchone)r   r+   	extensionr2   s       r   r%   z CreateExtension.extension_exists6   s    %,,.. 	+&NN?   ))**	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   8AA#&A#c                     d| j         z  S )NzCreates extension %sr   r   s    r   describezCreateExtension.describe>   s    %	11r   c                     d| j         z  S )Nzcreate_extension_%sr   r7   s    r   migration_name_fragmentz'CreateExtension.migration_name_fragmentA   s    $ty00r   N)__name__
__module____qualname__
reversibler   r   r.   r0   r%   r8   propertyr:   r   r   r   r   r      s        J      ,	& 	& 	&+ + +2 2 2 1 1 X1 1 1r   r   c                       e Zd Zd ZdS )BloomExtensionc                     d| _         d S )Nbloomr   r7   s    r   r   zBloomExtension.__init__G   s    			r   Nr;   r<   r=   r   r   r   r   rA   rA   F   s#            r   rA   c                       e Zd Zd ZdS )BtreeGinExtensionc                     d| _         d S )N	btree_ginr   r7   s    r   r   zBtreeGinExtension.__init__L   s    			r   NrD   r   r   r   rF   rF   K   s#                 r   rF   c                       e Zd Zd ZdS )BtreeGistExtensionc                     d| _         d S )N
btree_gistr   r7   s    r   r   zBtreeGistExtension.__init__Q   s     			r   NrD   r   r   r   rJ   rJ   P   s#        ! ! ! ! !r   rJ   c                       e Zd Zd ZdS )CITextExtensionc                     d| _         d S )Ncitextr   r7   s    r   r   zCITextExtension.__init__V       			r   NrD   r   r   r   rN   rN   U   #            r   rN   c                       e Zd Zd ZdS )CryptoExtensionc                     d| _         d S )Npgcryptor   r7   s    r   r   zCryptoExtension.__init__[       			r   NrD   r   r   r   rT   rT   Z   #            r   rT   c                       e Zd Zd ZdS )HStoreExtensionc                     d| _         d S )Nhstorer   r7   s    r   r   zHStoreExtension.__init__`   rQ   r   NrD   r   r   r   rZ   rZ   _   rR   r   rZ   c                       e Zd Zd ZdS )TrigramExtensionc                     d| _         d S )Npg_trgmr   r7   s    r   r   zTrigramExtension.__init__e   s    			r   NrD   r   r   r   r^   r^   d   s#            r   r^   c                       e Zd Zd ZdS )UnaccentExtensionc                     d| _         d S )Nunaccentr   r7   s    r   r   zUnaccentExtension.__init__j   rW   r   NrD   r   r   r   rb   rb   i   rX   r   rb   c                       e Zd Zd ZdS )NotInTransactionMixinc                 V    |j         j        rt          d| j        j        z            d S )Nz_The %s operation cannot be executed inside a transaction (set atomic = False on the migration).)r!   in_atomic_blockr   	__class__r;   r   r+   s     r   _ensure_not_in_transactionz0NotInTransactionMixin._ensure_not_in_transactiono   s?    #3 	#9;?>;RS  	 	r   N)r;   r<   r=   rk   r   r   r   rf   rf   n   s#            r   rf   c                   (    e Zd ZdZdZd Zd Zd ZdS )AddIndexConcurrentlyzDCreate an index using PostgreSQL's CREATE INDEX CONCURRENTLY syntax.Fc                 p    d| j         j        dd                    | j         j                  d| j        S )NzConcurrently create index z on field(s) , z
 of model )indexr   joinfields
model_namer7   s    r   r8   zAddIndexConcurrently.describe|   s:     JOOOIIdj'((((OO
 	
r   c                     |                      |           |j                            || j                  }|                     |j        j        |          r|                    || j        d           d S d S NT)concurrently)	rk   apps	get_modelrs   allow_migrate_modelr!   r$   	add_indexrp   r   r   r+   r,   r-   models         r   r.   z&AddIndexConcurrently.database_forwards   s}    ''666''	4?CC##M$<$BEJJ 	J##E4:D#IIIII	J 	Jr   c                     |                      |           |j                            || j                  }|                     |j        j        |          r|                    || j        d           d S d S ru   )	rk   rw   rx   rs   ry   r!   r$   remove_indexrp   r{   s         r   r0   z'AddIndexConcurrently.database_backwards   s}    ''666)))T_EE##M$<$BEJJ 	M&&udjt&LLLLL	M 	Mr   Nr;   r<   r=   __doc__atomicr8   r.   r0   r   r   r   rm   rm   w   sT        NNF
 
 
J J JM M M M Mr   rm   c                   (    e Zd ZdZdZd Zd Zd ZdS )RemoveIndexConcurrentlyzBRemove an index using PostgreSQL's DROP INDEX CONCURRENTLY syntax.Fc                 &    d| j         d| j        S )NzConcurrently remove index z from r   rs   r7   s    r   r8   z RemoveIndexConcurrently.describe   s     9=DOOTTr   c                 @   |                      |           |j                            || j                  }|                     |j        j        |          rH|j        || j        f         }|	                    | j
                  }|                    ||d           d S d S ru   )rk   rw   rx   rs   ry   r!   r$   modelsmodel_name_lowerget_index_by_namer   r~   )r   r   r+   r,   r-   r|   from_model_staterp   s           r   r.   z)RemoveIndexConcurrently.database_forwards   s    ''666)))T_EE##M$<$BEJJ 	H)0D<Q1QR$66tyAAE&&ue$&GGGGG	H 	Hr   c                 @   |                      |           |j                            || j                  }|                     |j        j        |          rH|j        || j        f         }|	                    | j
                  }|                    ||d           d S d S ru   )rk   rw   rx   rs   ry   r!   r$   r   r   r   r   rz   )r   r   r+   r,   r-   r|   to_model_staterp   s           r   r0   z*RemoveIndexConcurrently.database_backwards   s    ''666''	4?CC##M$<$BEJJ 	E%_Y8M-MNN"44TY??E##E5t#DDDDD	E 	Er   Nr   r   r   r   r   r      sW        LLFU U UH H HE E E E Er   r   c                   4    e Zd ZddddZd Zd Zd Zd Zd	S )
CollationOperationlibcT)providerdeterministicc                >    || _         || _        || _        || _        d S r   )r   localer   r   )r   r   r   r   r   s        r   r   zCollationOperation.__init__   s%    	 *r   c                     d S r   r   r   s      r   r   z!CollationOperation.state_forwards   r   r   c                     | j         | j        d}| j        r| j        dk    r
| j        |d<   | j        du r
| j        |d<   | j        j        g |fS )N)r   r   r   r   Fr   )r   r   r   r   ri   r=   )r   kwargss     r   deconstructzCollationOperation.deconstruct   sh    )t{;;= 	/T]f44!%F:&&&*&8F?#N'
 	
r   c           	      n   d|                     | j                  i}| j        dk    r|                     | j                  |d<   | j        du rd|d<   |                    d|                     | j                  d                    d	 |                                D                       d
z             d S )Nr   r   r   Ffalser   z$CREATE COLLATION %(name)s (%(args)s)ro   c              3   *   K   | ]\  }}| d | V  dS )=Nr   ).0optionvalues      r   	<genexpr>z6CollationOperation.create_collation.<locals>.<genexpr>   sE       " ",9FEv''''" " " " " "r   )r   args)r'   r   r   r   r&   r   rq   items)r   r+   r   s      r   create_collationz#CollationOperation.create_collation   s    -224;??@=F"",77FFD&&$+D!2%00;;		 " "=AZZ\\" " "   	
 	
 	
 	
 	
r   c                 f    |                     d|                    | j                  z             d S )NzDROP COLLATION %s)r&   r'   r   rj   s     r   remove_collationz#CollationOperation.remove_collation   s<    -":":49"E"EE	
 	
 	
 	
 	
r   N)r;   r<   r=   r   r   r   r   r   r   r   r   r   r      sn        17t + + + + +  

 

 


 
 
 
 
 
 
 
r   r   c                   :    e Zd ZdZd Zd Zd Zed             ZdS )CreateCollationzCreate a collation.c                     |j         j        dk    st          j        |j         j        |          sd S |                     |           d S Nr   )r!   r"   r   r#   r$   r   r*   s        r   r.   z!CreateCollation.database_forwards   S    #*l::&BV$*IC
 C
: Fm,,,,,r   c                 r    t          j        |j        j        |          sd S |                     |           d S r   )r   r#   r!   r$   r   r*   s        r   r0   z"CreateCollation.database_backwards   <    #M$<$BINN 	Fm,,,,,r   c                     d| j          S )NzCreate collation r   r7   s    r   r8   zCreateCollation.describe       .49...r   c                 :    d| j                                         z  S )Nzcreate_collation_%sr   lowerr7   s    r   r:   z'CreateCollation.migration_name_fragment       $ty'8'888r   N	r;   r<   r=   r   r.   r0   r8   r?   r:   r   r   r   r   r      b        - - -- - -
/ / / 9 9 X9 9 9r   r   c                   :    e Zd ZdZd Zd Zd Zed             ZdS )RemoveCollationzRemove a collation.c                     |j         j        dk    st          j        |j         j        |          sd S |                     |           d S r   )r!   r"   r   r#   r$   r   r*   s        r   r.   z!RemoveCollation.database_forwards   r   r   c                 r    t          j        |j        j        |          sd S |                     |           d S r   )r   r#   r!   r$   r   r*   s        r   r0   z"RemoveCollation.database_backwards   r   r   c                     d| j          S )NzRemove collation r   r7   s    r   r8   zRemoveCollation.describe   r   r   c                 :    d| j                                         z  S )Nzremove_collation_%sr   r7   s    r   r:   z'RemoveCollation.migration_name_fragment   r   r   Nr   r   r   r   r   r      r   r   r   c                   H     e Zd ZdZ fdZd Zd Ze fd            Z xZ	S )AddConstraintNotValidzg
    Add a table constraint without enforcing validation, using PostgreSQL's
    NOT VALID syntax.
    c                     t          |t                    st          d          t                                          ||           d S )Nz<AddConstraintNotValid.constraint must be a check constraint.)
isinstancer   	TypeErrorsuperr   )r   rs   
constraintri   s      r   r   zAddConstraintNotValid.__init__	  sL    *o66 	N   	Z00000r   c                 0    d| j         j        d| j        S )NzCreate not valid constraint 
 on model )r   r   rs   r7   s    r   r8   zAddConstraintNotValid.describe  s#     O   OO
 	
r   c                    |j                             || j                  }|                     |j        j        |          rF| j                            ||          }|r+|                    t          |          dz   d            d S d S d S )Nz
 NOT VALID)params)
rw   rx   rs   ry   r!   r$   r   
create_sqlr&   str)r   r   r+   r,   r-   r|   constraint_sqls          r   r.   z'AddConstraintNotValid.database_forwards  s    )))T_EE##M$<$BEJJ 	W!_77}MMN W %%c.&9&9L&HQU%VVVVV	W 	WW Wr   c                 0    t                      j        dz   S )N
_not_valid)r   r:   )r   ri   s    r   r:   z-AddConstraintNotValid.migration_name_fragment   s    ww.==r   )
r;   r<   r=   r   r   r8   r.   r?   r:   __classcell__)ri   s   @r   r   r     s         
1 1 1 1 1
 
 
W W W > > > > X> > > > >r   r   c                   L    e Zd ZdZd Zd Zd Zd Zd Ze	d             Z
d Zd	S )
ValidateConstraintz&Validate a table NOT VALID constraint.c                 "    || _         || _        d S r   rs   r   )r   rs   r   s      r   r   zValidateConstraint.__init__(  s    $			r   c                 &    d| j         d| j        S )NzValidate constraint r   r   r7   s    r   r8   zValidateConstraint.describe,  s     7;yyy$//RRr   c                 *   |j                             || j                  }|                     |j        j        |          rR|                    d|                    |j        j	                  d|                    | j
                             d S d S )NzALTER TABLE z VALIDATE CONSTRAINT )rw   rx   rs   ry   r!   r$   r&   r'   _metadb_tabler   r{   s         r   r.   z$ValidateConstraint.database_forwards/  s    )))T_EE##M$<$BEJJ 	!!! ",,U[-ABBBB!,,TY777    	 	r   c                     d S r   r   r*   s        r   r0   z%ValidateConstraint.database_backwards:  s    r   c                     d S r   r   r   s      r   r   z!ValidateConstraint.state_forwards>  r   r   c                 l    | j                                         d| j                                        S )N
_validate_)rs   r   r   r7   s    r   r:   z*ValidateConstraint.migration_name_fragmentA  s0    #'?#8#8#:#:#:#:DIOO<M<M<MNNr   c                 :    | j         j        g | j        | j        dfS )Nr   )ri   r;   rs   r   r7   s    r   r   zValidateConstraint.deconstructE  s+    N#"o	 
 	
r   N)r;   r<   r=   r   r   r8   r.   r0   r   r?   r:   r   r   r   r   r   r   %  s        00  S S S	 	 	     O O XO
 
 
 
 
r   r   N) django.contrib.postgres.signalsr   r   r   	django.dbr   r   django.db.migrationsr   r	   r
   $django.db.migrations.operations.baser   django.db.models.constraintsr   r   rA   rF   rJ   rN   rT   rZ   r^   rb   rf   rm   r   r   r   r   r   r   r   r   r   <module>r      s           
 0 / / / / / / / E E E E E E E E E E : : : : : : 8 8 8 8 8 871 71 71 71 71i 71 71 71t    _   
               
! ! ! ! ! ! ! !
    o   
    o   
    o   
       
       
       M M M M M0( M M M2E E E E E3[ E E E2)
 )
 )
 )
 )
 )
 )
 )
X9 9 9 9 9( 9 9 9.9 9 9 9 9( 9 9 9.> > > > >M > > >D(
 (
 (
 (
 (
 (
 (
 (
 (
 (
r   