3
g$                 @   s6  d dl mZmZmZ d dl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d#S )$    )get_citext_oidsget_hstore_oidsregister_type_handlers)NotSupportedErrorrouter)AddIndexRemoveIndex)	Operationc               @   sL   e Zd Zd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   `/var/www/tester-filtro-web/env/lib/python3.6/site-packages/django/contrib/postgres/operations.py__init__   s    zCreateExtension.__init__c             C   s   d S )Nr   )r   	app_labelstater   r   r   state_forwards   s    zCreateExtension.state_forwardsc             C   sd   |j jdkstj|j j| r"d S | j|| jsF|jd|j| j  t	j
  tj
  t|j  d S )N
postgresqlz!CREATE EXTENSION IF NOT EXISTS %s)
connectionvendorr   allow_migratealiasextension_existsr   execute
quote_namer   cache_clearr   r   )r   r   schema_editor
from_stateto_stater   r   r   database_forwards   s    z!CreateExtension.database_forwardsc             C   sL   t j|jj|sd S | j|| jr8|jd|j| j  tj	  t
j	  d S )NzDROP EXTENSION IF EXISTS %s)r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   database_backwards$   s    z"CreateExtension.database_backwardsc          
   C   s0   |j j }|jd|g t|j S Q R X d S )Nz-SELECT 1 FROM pg_extension WHERE extname = %s)r   cursorr   boolZfetchone)r   r   	extensionr!   r   r   r   r   /   s
    z CreateExtension.extension_existsc             C   s
   d| j  S )NzCreates extension %s)r   )r   r   r   r   describe7   s    zCreateExtension.describec             C   s
   d| j  S )Nzcreate_extension_%s)r   )r   r   r   r   migration_name_fragment:   s    z'CreateExtension.migration_name_fragmentN)__name__
__module____qualname__Z
reversibler   r   r   r    r   r$   propertyr%   r   r   r   r   r
   	   s   r
   c               @   s   e Zd Zdd ZdS )BloomExtensionc             C   s
   d| _ d S )NZbloom)r   )r   r   r   r   r   A   s    zBloomExtension.__init__N)r&   r'   r(   r   r   r   r   r   r*   ?   s   r*   c               @   s   e Zd Zdd ZdS )BtreeGinExtensionc             C   s
   d| _ d S )NZ	btree_gin)r   )r   r   r   r   r   G   s    zBtreeGinExtension.__init__N)r&   r'   r(   r   r   r   r   r   r+   E   s   r+   c               @   s   e Zd Zdd ZdS )BtreeGistExtensionc             C   s
   d| _ d S )NZ
btree_gist)r   )r   r   r   r   r   M   s    zBtreeGistExtension.__init__N)r&   r'   r(   r   r   r   r   r   r,   K   s   r,   c               @   s   e Zd Zdd ZdS )CITextExtensionc             C   s
   d| _ d S )NZcitext)r   )r   r   r   r   r   S   s    zCITextExtension.__init__N)r&   r'   r(   r   r   r   r   r   r-   Q   s   r-   c               @   s   e Zd Zdd ZdS )CryptoExtensionc             C   s
   d| _ d S )NZpgcrypto)r   )r   r   r   r   r   Y   s    zCryptoExtension.__init__N)r&   r'   r(   r   r   r   r   r   r.   W   s   r.   c               @   s   e Zd Zdd ZdS )HStoreExtensionc             C   s
   d| _ d S )NZhstore)r   )r   r   r   r   r   _   s    zHStoreExtension.__init__N)r&   r'   r(   r   r   r   r   r   r/   ]   s   r/   c               @   s   e Zd Zdd ZdS )TrigramExtensionc             C   s
   d| _ d S )NZpg_trgm)r   )r   r   r   r   r   e   s    zTrigramExtension.__init__N)r&   r'   r(   r   r   r   r   r   r0   c   s   r0   c               @   s   e Zd Zdd ZdS )UnaccentExtensionc             C   s
   d| _ d S )NZunaccent)r   )r   r   r   r   r   k   s    zUnaccentExtension.__init__N)r&   r'   r(   r   r   r   r   r   r1   i   s   r1   c               @   s   e Zd Zdd ZdS )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   Zin_atomic_blockr   	__class__r&   )r   r   r   r   r   _ensure_not_in_transactionp   s    z0NotInTransactionMixin._ensure_not_in_transactionN)r&   r'   r(   r4   r   r   r   r   r2   o   s   r2   c               @   s,   e Zd ZdZd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| jf S )Nz7Concurrently create index %s on field(s) %s of model %sz, )indexr   joinfields
model_name)r   r   r   r   r$   }   s    zAddIndexConcurrently.describec             C   s@   | j | |jj|| j}| j|jj|r<|j|| jdd d S )NT)concurrently)	r4   apps	get_modelr9   allow_migrate_modelr   r   	add_indexr6   )r   r   r   r   r   modelr   r   r   r      s    
z&AddIndexConcurrently.database_forwardsc             C   s@   | j | |jj|| j}| j|jj|r<|j|| jdd d S )NT)r:   )	r4   r;   r<   r9   r=   r   r   remove_indexr6   )r   r   r   r   r   r?   r   r   r   r       s    
z'AddIndexConcurrently.database_backwardsN)r&   r'   r(   __doc__atomicr$   r   r    r   r   r   r   r5   y   s
   r5   c               @   s,   e Zd ZdZdZdd Zdd Zdd Zd	S )
RemoveIndexConcurrentlyzBRemove an index using PostgreSQL's DROP INDEX CONCURRENTLY syntax.Fc             C   s   d| j | jf S )Nz$Concurrently remove index %s from %s)r   r9   )r   r   r   r   r$      s    z RemoveIndexConcurrently.describec             C   sZ   | j | |jj|| j}| j|jj|rV|j|| jf }|j	| j
}|j||dd d S )NT)r:   )r4   r;   r<   r9   r=   r   r   modelsmodel_name_lowerget_index_by_namer   r@   )r   r   r   r   r   r?   Zfrom_model_stater6   r   r   r   r      s    
z)RemoveIndexConcurrently.database_forwardsc             C   sZ   | j | |jj|| j}| j|jj|rV|j|| jf }|j	| j
}|j||dd d S )NT)r:   )r4   r;   r<   r9   r=   r   r   rD   rE   rF   r   r>   )r   r   r   r   r   r?   Zto_model_stater6   r   r   r   r       s    
z*RemoveIndexConcurrently.database_backwardsN)r&   r'   r(   rA   rB   r$   r   r    r   r   r   r   rC      s
   rC   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 )N)r   localerI   rJ   )r   r   rK   rI   rJ   r   r   r   r      s    zCollationOperation.__init__c             C   s   d S )Nr   )r   r   r   r   r   r   r      s    z!CollationOperation.state_forwardsc             C   sJ   | j | jd}| jr(| jdkr(| j|d< | jdkr<| j|d< | jjg |fS )N)r   rK   rH   rI   FrJ   )r   rK   rI   rJ   r3   r(   )r   kwargsr   r   r   deconstruct   s    


zCollationOperation.deconstructc             C   s   | j dkr|jjj rtd| jdkr<|jjj r<tdd|j| ji}| jdkrf|j| j|d< | j dkrxd|d< |j	d	|j| j
d
jdd |j D d  d S )NFz4Non-deterministic collations require PostgreSQL 12+.rH   z*Non-libc providers require PostgreSQL 10+.rK   rI   falserJ   z$CREATE COLLATION %(name)s (%(args)s)z, c             s   s    | ]\}}| d | V  qdS )=Nr   ).0optionvaluer   r   r   	<genexpr>   s    z6CollationOperation.create_collation.<locals>.<genexpr>)r   args)rJ   r   featuresZ%supports_non_deterministic_collationsr   rI   Z&supports_alternate_collation_providersr   rK   r   r   r7   items)r   r   rT   r   r   r   create_collation   s    




z#CollationOperation.create_collationc             C   s   |j d|j| j  d S )NzDROP COLLATION %s)r   r   r   )r   r   r   r   r   remove_collation   s    z#CollationOperation.remove_collationN)r&   r'   r(   r   r   rM   rW   rX   r   r   r   r   rG      s
   rG   c               @   s4   e Zd ZdZdd Zdd Zdd Zedd	 Zd
S )CreateCollationzCreate a collation.c             C   s0   |j jdkstj|j j| r"d S | j| d S )Nr   )r   r   r   r   r   rW   )r   r   r   r   r   r   r   r   r      s    z!CreateCollation.database_forwardsc             C   s"   t j|jj|sd S | j| d S )N)r   r   r   r   rX   )r   r   r   r   r   r   r   r   r       s    z"CreateCollation.database_backwardsc             C   s   d| j  S )NzCreate collation )r   )r   r   r   r   r$      s    zCreateCollation.describec             C   s   d| j j  S )Nzcreate_collation_%s)r   lower)r   r   r   r   r%      s    z'CreateCollation.migration_name_fragmentN)	r&   r'   r(   rA   r   r    r$   r)   r%   r   r   r   r   rY      s
   rY   c               @   s4   e Zd ZdZdd Zdd Zdd Zedd	 Zd
S )RemoveCollationzRemove a collation.c             C   s0   |j jdkstj|j j| r"d S | j| d S )Nr   )r   r   r   r   r   rX   )r   r   r   r   r   r   r   r   r      s    z!RemoveCollation.database_forwardsc             C   s"   t j|jj|sd S | j| d S )N)r   r   r   r   rW   )r   r   r   r   r   r   r   r   r       s    z"RemoveCollation.database_backwardsc             C   s   d| j  S )NzRemove collation )r   )r   r   r   r   r$     s    zRemoveCollation.describec             C   s   d| j j  S )Nzremove_collation_%s)r   rZ   )r   r   r   r   r%     s    z'RemoveCollation.migration_name_fragmentN)	r&   r'   r(   rA   r   r    r$   r)   r%   r   r   r   r   r[      s
   r[   N)Zdjango.contrib.postgres.signalsr   r   r   Z	django.dbr   r   Zdjango.db.migrationsr   r   Z$django.db.migrations.operations.baser	   r
   r*   r+   r,   r-   r.   r/   r0   r1   r2   r5   rC   rG   rY   r[   r   r   r   r   <module>   s$   6
3