
    Hwg-                        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y())    )get_citext_oidsget_hstore_oidsregister_type_handlers)NotSupportedErrorrouter)AddConstraintAddIndexRemoveIndex)	Operation)CheckConstraintc                   D    e Zd ZdZd Zd Zd Zd Zd Zd Z	e
d        Zy	)
CreateExtensionTc                     || _         y Nname)selfr   s     Y/var/www/horilla/myenv/lib/python3.12/site-packages/django/contrib/postgres/operations.py__init__zCreateExtension.__init__   s	    	    c                      y r    r   	app_labelstates      r   state_forwardszCreateExtension.state_forwards       r   c                 &   |j                   j                  dk7  s*t        j                  |j                   j                  |      sy | j                  || j                        s-|j                  d|j                  | j                        z         t        j                          t        j                          t        |j                          t        |j                   d      r1|j                   j                  |j                   j                   d       y y )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:&BVBV$$**IC
 $$]DII>!!3**49956
 	##%##% 	}778=++-IJ$$??((33T Kr   c                 <   t        j                  |j                  j                  |      sy | j	                  || j
                        r-|j                  d|j                  | j
                        z         t        j                          t        j                          y )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+   st    ##M$<$<$B$BIN  		:!!-0H0H0SS 	##%##%r   c                     |j                   j                         5 }|j                  d|g       t        |j	                               cd d d        S # 1 sw Y   y xY w)Nz-SELECT 1 FROM pg_extension WHERE extname = %s)r!   cursorr&   boolfetchone)r   r+   	extensionr2   s       r   r%   z CreateExtension.extension_exists6   sP    %%,,. 	+&NN? )*	+ 	+ 	+s   ,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    $tyy00r   N)__name__
__module____qualname__
reversibler   r   r.   r0   r%   r8   propertyr:   r   r   r   r   r      s9    J,	&+2 1 1r   r   c                       e Zd Zd Zy)BloomExtensionc                     d| _         y )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y)BtreeGinExtensionc                     d| _         y )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y)BtreeGistExtensionc                     d| _         y )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y)CITextExtensionc                     d| _         y )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y)CryptoExtensionc                     d| _         y )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y)HStoreExtensionc                     d| _         y )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y)TrigramExtensionc                     d| _         y )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y)UnaccentExtensionc                     d| _         y )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y)NotInTransactionMixinc                 t    |j                   j                  r"t        d| j                  j                  z        y )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3#9;?>>;R;RS  4r   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y)AddIndexConcurrentlyzDCreate an index using PostgreSQL's CREATE INDEX CONCURRENTLY syntax.Fc                     d| j                   j                  ddj                  | 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|   s4    JJOOIIdjj''(OO
 	
r   c                     | j                  |       |j                  j                  || j                        }| j	                  |j
                  j                  |      r|j                  || j                  d       y y NT)concurrently)	rk   apps	get_modelrs   allow_migrate_modelr!   r$   	add_indexrp   r   r   r+   r,   r-   models         r   r.   z&AddIndexConcurrently.database_forwards   se    ''6''	4??C##M$<$<$B$BEJ##E4::D#I Kr   c                     | j                  |       |j                  j                  || j                        }| j	                  |j
                  j                  |      r|j                  || j                  d       y y ru   )	rk   rw   rx   rs   ry   r!   r$   remove_indexrp   r{   s         r   r0   z'AddIndexConcurrently.database_backwards   se    ''6)))T__E##M$<$<$B$BEJ&&udjjt&L Kr   Nr;   r<   r=   __doc__atomicr8   r.   r0   r   r   r   rm   rm   w   s    NF
JMr   rm   c                   &    e Zd ZdZdZd Zd Zd Zy)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                 T   | j                  |       |j                  j                  || j                        }| j	                  |j
                  j                  |      rK|j                  || j                  f   }|j                  | j                        }|j                  ||d       y y 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)))T__E##M$<$<$B$BEJ)00D<Q<Q1QR$66tyyAE&&ue$&G Kr   c                 T   | j                  |       |j                  j                  || j                        }| j	                  |j
                  j                  |      rK|j                  || j                  f   }|j                  | j                        }|j                  ||d       y y 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''	4??C##M$<$<$B$BEJ%__Y8M8M-MNN"44TYY?E##E5t#D Kr   Nr   r   r   r   r   r      s    LFUHEr   r   c                   2    e Zd ZddddZd Zd Zd Zd Zy	)
CollationOperationlibcT)providerdeterministicc                <    || _         || _        || _        || _        y r   )r   localer   r   )r   r   r   r   r   s        r   r   zCollationOperation.__init__   s    	 *r   c                      y r   r   r   s      r   r   z!CollationOperation.state_forwards   r   r   c                     | j                   | j                  d}| j                  r| j                  dk7  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   so    ))t{{;==T]]f4!%F:&&*&8&8F?#NN''
 	
r   c           	      f   d|j                  | j                        i}| j                  dk7  r|j                  | j                        |d<   | j                  du rd|d<   |j	                  d|j                  | j
                        dj                  d	 |j                         D              d
z         y )Nr   r   r   Ffalser   z$CREATE COLLATION %(name)s (%(args)s)ro   c              3   0   K   | ]  \  }}| d |   yw)=Nr   ).0optionvalues      r   	<genexpr>z6CollationOperation.create_collation.<locals>.<genexpr>   s$      ",9FEvhaw'"s   )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FD&$+D!2%00;		 "=AZZ\" 	
r   c                 ^    |j                  d|j                  | j                        z         y )NzDROP COLLATION %s)r&   r'   r   rj   s     r   remove_collationz#CollationOperation.remove_collation   s'    -":":499"EE	
r   N)r;   r<   r=   r   r   r   r   r   r   r   r   r   r      s     17t +


 
r   r   c                   2    e Zd ZdZd Zd Zd Zed        Zy)CreateCollationzCreate a collation.c                     |j                   j                  dk7  s*t        j                  |j                   j                  |      sy | j                  |       y Nr   )r!   r"   r   r#   r$   r   r*   s        r   r.   z!CreateCollation.database_forwards   H    ##**l:&BVBV$$**IC
 m,r   c                 |    t        j                  |j                  j                  |      sy | j	                  |       y r   )r   r#   r!   r$   r   r*   s        r   r0   z"CreateCollation.database_backwards   /    ##M$<$<$B$BINm,r   c                      d| j                    S )NzCreate collation r   r7   s    r   r8   zCreateCollation.describe       "499+..r   c                 <    d| j                   j                         z  S )Nzcreate_collation_%sr   lowerr7   s    r   r:   z'CreateCollation.migration_name_fragment       $tyy'888r   N	r;   r<   r=   r   r.   r0   r8   r?   r:   r   r   r   r   r      (    --
/ 9 9r   r   c                   2    e Zd ZdZd Zd Zd Zed        Zy)RemoveCollationzRemove a collation.c                     |j                   j                  dk7  s*t        j                  |j                   j                  |      sy | j                  |       y r   )r!   r"   r   r#   r$   r   r*   s        r   r.   z!RemoveCollation.database_forwards   r   r   c                 |    t        j                  |j                  j                  |      sy | j	                  |       y 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                   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                   B     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        |   ||       y )Nz<AddConstraintNotValid.constraint must be a check constraint.)
isinstancer   	TypeErrorsuperr   )r   rs   
constraintri   s      r   r   zAddConstraintNotValid.__init__	  s.    *o6N  	Z0r   c                 N    d| j                   j                  d| j                  S )NzCreate not valid constraint 
 on model )r   r   rs   r7   s    r   r8   zAddConstraintNotValid.describe  s     OO  OO
 	
r   c                    |j                   j                  || j                        }| j                  |j                  j
                  |      r?| j                  j                  ||      }|r |j                  t        |      dz   d        y y y )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##M$<$<$B$BEJ!__77}MN %%c.&9L&HQU%V	  Kr   c                     t         |   dz   S )N
_not_valid)r   r:   )r   ri   s    r   r:   z-AddConstraintNotValid.migration_name_fragment   s    w.==r   )
r;   r<   r=   r   r   r8   r.   r?   r:   __classcell__)ri   s   @r   r   r     s,    
1
W > >r   r   c                   D    e Zd ZdZd Zd Zd Zd Zd Ze	d        Z
d Zy	)
ValidateConstraintz&Validate a table NOT VALID constraint.c                      || _         || _        y 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;yy$//RRr   c                 D   |j                   j                  || j                        }| j                  |j                  j
                  |      rT|j                  d|j                  |j                  j                        d|j                  | j                               y y )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##M$<$<$B$BEJ!! ",,U[[-A-AB!,,TYY7 Kr   c                      y r   r   r*   s        r   r0   z%ValidateConstraint.database_backwards:  s    r   c                      y r   r   r   s      r   r   z!ValidateConstraint.state_forwards>  r   r   c                 p    | j                   j                         d| j                  j                         S )N
_validate_)rs   r   r   r7   s    r   r:   z*ValidateConstraint.migration_name_fragmentA  s%    #'??#8#8#:DIIOO<MNNr   c                 b    | j                   j                  g | j                  | j                  dfS )Nr   )ri   r;   rs   r   r7   s    r   r   zValidateConstraint.deconstructE  s/    NN##"oo		
 	
r   N)r;   r<   r=   r   r   r8   r.   r0   r   r?   r:   r   r   r   r   r   r   %  s:    0S	 O 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 : 871i 71t_ 
   
! !
o 
o 
o 
 
 
 M0( M2E3[ E2)
 )
X9( 9.9( 9.>M >D(
 (
r   