o
    þÞhò/  ã                   @   sj  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mZ d dlmZ G dd„ deƒZG dd	„ d	eƒZG d
d„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ dƒZG dd„ dee	ƒZG dd„ dee
ƒZG dd„ deƒZG d d!„ d!eƒZG d"d#„ d#eƒZG d$d%„ d%eƒZG d&d'„ d'eƒZ d(S ))é    )Úget_citext_oidsÚget_hstore_oidsÚregister_type_handlers)ÚNotSupportedErrorÚrouter)ÚAddConstraintÚAddIndexÚRemoveIndex)Ú	OperationÚOperationCategory)ÚCheckConstraintc                   @   sR   e Zd ZdZejZdd„ Zdd„ Zdd„ Z	dd	„ Z
d
d„ Zdd„ Zedd„ ƒZdS )ÚCreateExtensionTc                 C   s
   || _ d S ©N©Úname)Úselfr   © r   úb/var/www/html/premium_crap/venv/lib/python3.10/site-packages/django/contrib/postgres/operations.pyÚ__init__   ó   
zCreateExtension.__init__c                 C   ó   d S r   r   ©r   Ú	app_labelÚstater   r   r   Ústate_forwards   ó   zCreateExtension.state_forwardsc                 C   s„   |j jdkst |j j|¡sd S |  || j¡s"| d| | j¡ ¡ t	 
¡  t 
¡  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_stater   r   r   Údatabase_forwards   s$   ÿ
ÿÿ
ÿÿz!CreateExtension.database_forwardsc                 C   sL   t  |jj|¡s
d S |  || j¡r| d| | j¡ ¡ t 	¡  t
 	¡  d S )NzDROP EXTENSION IF EXISTS %s)r   r    r   r!   r"   r   r#   r$   r   r%   r   r'   r   r   r   Údatabase_backwards,   s   ÿz"CreateExtension.database_backwardsc                 C   sH   |j  ¡ �}| d|g¡ t| ¡ ƒW  d   ƒ S 1 sw   Y  d S )Nz-SELECT 1 FROM pg_extension WHERE extname = %s)r   Úcursorr#   ÚboolÚfetchone)r   r(   Ú	extensionr-   r   r   r   r"   7   s   þ
$ûz CreateExtension.extension_existsc                 C   ó
   d| j  S )NzCreates extension %sr   ©r   r   r   r   Údescribe?   r   zCreateExtension.describec                 C   r1   )Nzcreate_extension_%sr   r2   r   r   r   Úmigration_name_fragmentB   s   
z'CreateExtension.migration_name_fragmentN)Ú__name__Ú
__module__Ú__qualname__Ú
reversibler   ÚADDITIONÚcategoryr   r   r+   r,   r"   r3   Úpropertyr4   r   r   r   r   r      s    r   c                   @   ó   e Zd Zdd„ ZdS )ÚBloomExtensionc                 C   ó
   d| _ d S )NÚbloomr   r2   r   r   r   r   H   r   zBloomExtension.__init__N©r5   r6   r7   r   r   r   r   r   r=   G   ó    r=   c                   @   r<   )ÚBtreeGinExtensionc                 C   r>   )NÚ	btree_ginr   r2   r   r   r   r   M   r   zBtreeGinExtension.__init__Nr@   r   r   r   r   rB   L   rA   rB   c                   @   r<   )ÚBtreeGistExtensionc                 C   r>   )NÚ
btree_gistr   r2   r   r   r   r   R   r   zBtreeGistExtension.__init__Nr@   r   r   r   r   rD   Q   rA   rD   c                   @   r<   )ÚCITextExtensionc                 C   r>   )NÚcitextr   r2   r   r   r   r   W   r   zCITextExtension.__init__Nr@   r   r   r   r   rF   V   rA   rF   c                   @   r<   )ÚCryptoExtensionc                 C   r>   )NÚpgcryptor   r2   r   r   r   r   \   r   zCryptoExtension.__init__Nr@   r   r   r   r   rH   [   rA   rH   c                   @   r<   )ÚHStoreExtensionc                 C   r>   )NÚhstorer   r2   r   r   r   r   a   r   zHStoreExtension.__init__Nr@   r   r   r   r   rJ   `   rA   rJ   c                   @   r<   )ÚTrigramExtensionc                 C   r>   )NÚpg_trgmr   r2   r   r   r   r   f   r   zTrigramExtension.__init__Nr@   r   r   r   r   rL   e   rA   rL   c                   @   r<   )ÚUnaccentExtensionc                 C   r>   )NÚunaccentr   r2   r   r   r   r   k   r   zUnaccentExtension.__init__Nr@   r   r   r   r   rN   j   rA   rN   c                   @   r<   )ÚNotInTransactionMixinc                 C   s   |j jrtd| jj ƒ‚d S )Nz_The %s operation cannot be executed inside a transaction (set atomic = False on the migration).)r   Úin_atomic_blockr   Ú	__class__r5   ©r   r(   r   r   r   Ú_ensure_not_in_transactionp   s   ÿÿÿz0NotInTransactionMixin._ensure_not_in_transactionN)r5   r6   r7   rT   r   r   r   r   rP   o   rA   rP   c                   @   ó2   e Zd ZdZdZejZdd„ Zdd„ Z	dd„ Z
d	S )
ÚAddIndexConcurrentlyzDCreate an index using PostgreSQL's CREATE INDEX CONCURRENTLY syntax.Fc                 C   s   d| j jd | j j¡| jf S )Nz7Concurrently create index %s on field(s) %s of model %sú, )Úindexr   ÚjoinÚfieldsÚ
model_namer2   r   r   r   r3   ~   s
   ýzAddIndexConcurrently.describec                 C   sD   |   |¡ |j || j¡}|  |jj|¡r |j|| jdd� d S d S ©NT)Úconcurrently)	rT   ÚappsÚ	get_modelr[   Úallow_migrate_modelr   r!   Ú	add_indexrX   ©r   r   r(   r)   r*   Úmodelr   r   r   r+   …   ó
   
ÿz&AddIndexConcurrently.database_forwardsc                 C   sD   |   |¡ |j || j¡}|  |jj|¡r |j|| jdd� d S d S r\   )	rT   r^   r_   r[   r`   r   r!   Úremove_indexrX   rb   r   r   r   r,   ‹   rd   z'AddIndexConcurrently.database_backwardsN)r5   r6   r7   Ú__doc__Úatomicr   r9   r:   r3   r+   r,   r   r   r   r   rV   x   s    rV   c                   @   rU   )
ÚRemoveIndexConcurrentlyzBRemove an index using PostgreSQL's DROP INDEX CONCURRENTLY syntax.Fc                 C   ó   d| j | jf S )Nz$Concurrently remove index %s from %s©r   r[   r2   r   r   r   r3   ˜   ó   z RemoveIndexConcurrently.describec                 C   s^   |   |¡ |j || j¡}|  |jj|¡r-|j|| jf }| 	| j
¡}|j||dd� d S d S r\   )rT   r^   r_   r[   r`   r   r!   ÚmodelsÚmodel_name_lowerÚget_index_by_namer   re   )r   r   r(   r)   r*   rc   Úfrom_model_staterX   r   r   r   r+   ›   ó   
ýz)RemoveIndexConcurrently.database_forwardsc                 C   s^   |   |¡ |j || j¡}|  |jj|¡r-|j|| jf }| 	| j
¡}|j||dd� d S d S r\   )rT   r^   r_   r[   r`   r   r!   rl   rm   rn   r   ra   )r   r   r(   r)   r*   rc   Úto_model_staterX   r   r   r   r,   £   rp   z*RemoveIndexConcurrently.database_backwardsN)r5   r6   r7   rf   rg   r   ÚREMOVALr:   r3   r+   r,   r   r   r   r   rh   ’   s    rh   c                   @   s<   e Zd Zdddœdd„Zdd„ Zdd	„ Zd
d„ Zdd„ ZdS )ÚCollationOperationÚlibcT)ÚproviderÚdeterministicc                C   s   || _ || _|| _|| _d S r   )r   Úlocaleru   rv   )r   r   rw   ru   rv   r   r   r   r   ­   s   
zCollationOperation.__init__c                 C   r   r   r   r   r   r   r   r   ³   r   z!CollationOperation.state_forwardsc                 C   sJ   | j | jdœ}| jr| jdkr| j|d< | jdu r| j|d< | jjg |fS )N)r   rw   rt   ru   Frv   )r   rw   ru   rv   rR   r7   )r   Úkwargsr   r   r   Údeconstruct¶   s   


ýzCollationOperation.deconstructc              	   C   sp   d|  | j¡i}| jdkr|  | j¡|d< | jdu rd|d< | d|  | j¡d d	d
„ | ¡ D ƒ¡dœ ¡ d S )Nrw   rt   ru   FÚfalserv   z$CREATE COLLATION %(name)s (%(args)s)rW   c                 s   s"   � | ]\}}|› d |› �V  qdS )ú=Nr   )Ú.0ÚoptionÚvaluer   r   r   Ú	<genexpr>Ì   s   € 
ÿz6CollationOperation.create_collation.<locals>.<genexpr>)r   Úargs)r$   rw   ru   rv   r#   r   rY   Úitems)r   r(   r€   r   r   r   Úcreate_collationÂ   s   



ÿþÿÿz#CollationOperation.create_collationc                 C   s   |  d| | j¡ ¡ d S )NzDROP COLLATION %s)r#   r$   r   rS   r   r   r   Úremove_collationÒ   s   ÿz#CollationOperation.remove_collationN)r5   r6   r7   r   r   ry   r‚   rƒ   r   r   r   r   rs   ¬   s    rs   c                       sJ   e Zd ZdZejZdd„ Zdd„ Zdd„ Z	e
dd	„ ƒZ‡ fd
d„Z‡  ZS )ÚCreateCollationzCreate a collation.c                 C   ó.   |j jdkst |j j|¡sd S |  |¡ d S ©Nr   )r   r   r   r    r!   r‚   r'   r   r   r   r+   Ý   ó
   ÿz!CreateCollation.database_forwardsc                 C   ó"   t  |jj|¡s
d S |  |¡ d S r   )r   r    r   r!   rƒ   r'   r   r   r   r,   ä   ó   z"CreateCollation.database_backwardsc                 C   ó   d| j › �S )NzCreate collation r   r2   r   r   r   r3   é   ó   zCreateCollation.describec                 C   ó   d| j  ¡  S )Nzcreate_collation_%s©r   Úlowerr2   r   r   r   r4   ì   ó   z'CreateCollation.migration_name_fragmentc                    s(   t |tƒr| j|jkrg S tƒ  ||¡S r   )Ú
isinstanceÚRemoveCollationr   ÚsuperÚreduce)r   Ú	operationr   ©rR   r   r   r“   ð   s   zCreateCollation.reduce)r5   r6   r7   rf   r   r9   r:   r+   r,   r3   r;   r4   r“   Ú__classcell__r   r   r•   r   r„   Ø   s    
r„   c                   @   s:   e Zd ZdZejZdd„ Zdd„ Zdd„ Z	e
dd	„ ƒZd
S )r‘   zRemove a collation.c                 C   r…   r†   )r   r   r   r    r!   rƒ   r'   r   r   r   r+   û   r‡   z!RemoveCollation.database_forwardsc                 C   rˆ   r   )r   r    r   r!   r‚   r'   r   r   r   r,     r‰   z"RemoveCollation.database_backwardsc                 C   rŠ   )NzRemove collation r   r2   r   r   r   r3     r‹   zRemoveCollation.describec                 C   rŒ   )Nzremove_collation_%sr�   r2   r   r   r   r4   
  r�   z'RemoveCollation.migration_name_fragmentN)r5   r6   r7   rf   r   rr   r:   r+   r,   r3   r;   r4   r   r   r   r   r‘   ö   s    r‘   c                       sF   e Zd ZdZejZ‡ fdd„Zdd„ Zdd„ Z	e
‡ fdd	„ƒZ‡  ZS )
ÚAddConstraintNotValidzg
    Add a table constraint without enforcing validation, using PostgreSQL's
    NOT VALID syntax.
    c                    s$   t |tƒs	tdƒ‚tƒ  ||¡ d S )Nz<AddConstraintNotValid.constraint must be a check constraint.)r�   r   Ú	TypeErrorr’   r   )r   r[   Ú
constraintr•   r   r   r     s
   
ÿzAddConstraintNotValid.__init__c                 C   s   d| j j| jf S )Nz*Create not valid constraint %s on model %s)r™   r   r[   r2   r   r   r   r3     s   þzAddConstraintNotValid.describec                 C   sT   |j  || j¡}|  |jj|¡r&| j ||¡}|r(|jt	|ƒd d d� d S d S d S )Nz
 NOT VALID)Úparams)
r^   r_   r[   r`   r   r!   r™   Ú
create_sqlr#   Ústr)r   r   r(   r)   r*   rc   Úconstraint_sqlr   r   r   r+   $  s   úz'AddConstraintNotValid.database_forwardsc                    s   t ƒ jd S )NÚ
_not_valid)r’   r4   r2   r•   r   r   r4   .  s   z-AddConstraintNotValid.migration_name_fragment)r5   r6   r7   rf   r   r9   r:   r   r3   r+   r;   r4   r–   r   r   r•   r   r—     s    
r—   c                   @   sR   e Zd ZdZejZdd„ Zdd„ Zdd„ Z	dd	„ Z
d
d„ Zedd„ ƒZdd„ ZdS )ÚValidateConstraintz&Validate a table NOT VALID constraint.c                 C   s   || _ || _d S r   ©r[   r   )r   r[   r   r   r   r   r   8  s   
zValidateConstraint.__init__c                 C   ri   )Nz"Validate constraint %s on model %srj   r2   r   r   r   r3   <  rk   zValidateConstraint.describec                 C   sL   |j  || j¡}|  |jj|¡r$| d| |jj	¡| | j
¡f ¡ d S d S )Nz%ALTER TABLE %s VALIDATE CONSTRAINT %s)r^   r_   r[   r`   r   r!   r#   r$   Ú_metaÚdb_tabler   rb   r   r   r   r+   ?  s   
þÿÿÿz$ValidateConstraint.database_forwardsc                 C   r   r   r   r'   r   r   r   r,   J  s   z%ValidateConstraint.database_backwardsc                 C   r   r   r   r   r   r   r   r   N  r   z!ValidateConstraint.state_forwardsc                 C   s   d| j  ¡ | j ¡ f S )Nz%s_validate_%s)r[   rŽ   r   r2   r   r   r   r4   Q  s   z*ValidateConstraint.migration_name_fragmentc                 C   s   | j jg | j| jdœfS )Nr    )rR   r5   r[   r   r2   r   r   r   ry   U  s   þýzValidateConstraint.deconstructN)r5   r6   r7   rf   r   Ú
ALTERATIONr:   r   r3   r+   r,   r   r;   r4   ry   r   r   r   r   rŸ   3  s    
rŸ   N)!Údjango.contrib.postgres.signalsr   r   r   Ú	django.dbr   r   Údjango.db.migrationsr   r   r	   Ú$django.db.migrations.operations.baser
   r   Údjango.db.models.constraintsr   r   r=   rB   rD   rF   rH   rJ   rL   rN   rP   rV   rh   rs   r„   r‘   r—   rŸ   r   r   r   r   Ú<module>   s,    ;	,$