U
    mÇf¸  ã                   @   sF   d Z ddlmZ ddlmZ ddlmZ ddlmZ G dd„ dƒZ	dS )	zL
 This object provides quoting for GEOS geometries into PostgreSQL/PostGIS.
é    )ÚBinary)Ú	ISQLQuote)Úto_pgraster)ÚGEOSGeometryc                   @   sR   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zedd„ ƒZ	dd„ Z
dd„ ZdS )ÚPostGISAdapterFc                 C   sL   t |ttfƒ| _| jr0t|jƒ| _t| jƒ| _n
t|ƒ| _|j	| _	|| _
dS )z3
        Initialize on the spatial object.
        N)Ú
isinstancer   r   Úis_geometryÚbytesÚewkbr   Ú_adapterr   ZsridÚ	geography)ÚselfÚobjr   © r   úR/tmp/pip-unpacked-wheel-siwebuq3/django/contrib/gis/db/backends/postgis/adapter.pyÚ__init__   s    
zPostGISAdapter.__init__c                 C   s   |t kr| S tdƒ‚dS )z9Does the given protocol conform to what Psycopg2 expects?z<Error implementing psycopg2 protocol. Is psycopg2 installed?N)r   Ú	Exception)r   Úprotor   r   r   Ú__conform__   s
    ÿzPostGISAdapter.__conform__c                 C   s   t |tƒo| j|jkS ©N)r   r   r
   )r   Úotherr   r   r   Ú__eq__&   s    zPostGISAdapter.__eq__c                 C   s
   t | jƒS r   )Úhashr
   ©r   r   r   r   Ú__hash__)   s    zPostGISAdapter.__hash__c                 C   s   |   ¡  ¡ S r   )Ú	getquotedÚdecoder   r   r   r   Ú__str__,   s    zPostGISAdapter.__str__c                 C   s   |S r   r   )ÚclsZpolyr   r   r   Ú_fix_polygon/   s    zPostGISAdapter._fix_polygonc                 C   s   | j r| j |¡ dS )zŒ
        This method allows escaping the binary in the style required by the
        server's `standard_conforming_string` setting.
        N)r   r   Úprepare)r   Úconnr   r   r   r    3   s    zPostGISAdapter.preparec                 C   s4   | j r"d| jrdnd| j ¡ f S d| j ¡  S dS )zP
        Return a properly quoted string for use in PostgreSQL/PostGIS.
        s   %s(%s)s   ST_GeogFromWKBs   ST_GeomFromEWKBs   '%s'::rasterN)r   r   r   r   r
   Úencoder   r   r   r   r   ;   s    þzPostGISAdapter.getquotedN)F)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   Úclassmethodr   r    r   r   r   r   r   r      s   
	
r   N)
Ú__doc__Zpsycopg2r   Zpsycopg2.extensionsr   Z/django.contrib.gis.db.backends.postgis.pgrasterr   Zdjango.contrib.gis.geosr   r   r   r   r   r   Ú<module>   s
   