
v^t
                 @   s*   d  d l  m Z Gd d   d e  Z d S)    )DatabaseSchemaEditorc                   sp   e  Z d  Z d Z d Z d Z d Z d Z d d   Z   f d d	   Z	   f d
 d   Z
   f d d   Z   S)PostGISSchemaEditorZGISTZGIST_GEOMETRY_OPS_NDzST_ConvexHull(%s)zLALTER COLUMN %(column)s TYPE %(type)s USING ST_Force3D(%(column)s)::%(type)szLALTER COLUMN %(column)s TYPE %(type)s USING ST_Force2D(%(column)s)::%(type)sc             C   s   |  j  j j |  S)N)
connectionopsgeo_quote_name)selfname r	   O/tmp/pip-build-8lau8j11/django/django/contrib/gis/db/backends/postgis/schema.pyr      s    z"PostGISSchemaEditor.geo_quote_namec                s)   t  | d d  r d St   j | |  S)NZspatial_indexFT)getattrsuper_field_should_be_indexed)r   modelfield)	__class__r	   r
   r      s    z,PostGISSchemaEditor._field_should_be_indexedc                s  t  |  d k s& t | d d  r< t   j | | |  S| d } |  j | j  } | j d k rw |  j | } n, | j d k r | j	 r d | |  j
 f } |  j d |  j d | j j | j f  d	 |  j | j j  d
 d |  j d | d d d d i S)N   r   ZgeodeticZRASTER   z%s %sr   z%s_%s_idtableZusingzUSING %scolumnsextra 	condition)lenhasattrr   _create_index_sql
quote_namecolumnZ	geom_typerast_index_wrapperdimZ	geographygeom_index_ops_ndZsql_create_indexZ_metaZdb_tablegeom_index_type)r   r   fieldskwargsr   Zfield_column)r   r	   r
   r      s    &
"z%PostGISSchemaEditor._create_index_sqlc                s   t  | d  s  t  | d  r9 t   j | | | |  S| j d k rc | j d k rc |  j } n3 | j d k r | j d k r |  j } n	 |  j } | d |  j | j  d | i g  f g  f S)z6
        Special case when dimension changed.
        r   r      r   type)	r   r   _alter_column_type_sqlr   sql_alter_column_to_3dsql_alter_column_to_2dZsql_alter_column_typer   r   )r   r   Z	old_fieldZ	new_fieldZnew_typeZ	sql_alter)r   r	   r
   r%   ,   s     	
z*PostGISSchemaEditor._alter_column_type_sql)__name__
__module____qualname__r    r   r   r&   r'   r   r   r   r%   r	   r	   )r   r
   r      s   r   N)Z$django.db.backends.postgresql.schemar   r   r	   r	   r	   r
   <module>   s   