o
    bi                     @   s,   d dl mZ d dlmZ G dd deZdS )    )	Statement)DatabaseSchemaEditorc                       sV   e Zd ZdZdZdZdZdZdd Z fdd	Z	d
d fdd
Z
 fddZ  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|S )N)
connectionopsgeo_quote_name)selfname r
   l/var/www/secure340b-portal/env/lib/python3.10/site-packages/django/contrib/gis/db/backends/postgis/schema.pyr      s   z"PostGISSchemaEditor.geo_quote_namec                    s   t |ddrdS t ||S )NZspatial_indexFT)getattrsuper_field_should_be_indexed)r   modelfield	__class__r
   r   r      s   z,PostGISSchemaEditor._field_should_be_indexedN)fieldsc             
      s   |d u st |dkst|d dst j|fd|i|S |d }| |j}|jdkr2| j| }n|jdkrA|j	sAd|| j
f }|dd u rRd	|jj|jf }n|d }t| j| || |jjd
| j |ddddS )N   r   Zgeodeticr   ZRASTER   z%s %sr	   z%s_%s_idz	 USING %s )r	   tableusingcolumnsextra	conditioninclude)lenhasattrr   _create_index_sql
quote_namecolumnZ	geom_typerast_index_wrapperdimZ	geographygeom_index_ops_ndget_metaZdb_tabler   Zsql_create_indexgeom_index_type)r   r   r   kwargsr   Zfield_columnZ
index_namer   r
   r   r      s*   "
z%PostGISSchemaEditor._create_index_sqlc                    s   t |dr
t |dst ||||S |jdkr!|jdkr!| j}n|jdkr/|jdkr/| j}n| j}|| |j|d 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_fieldnew_typeZ	sql_alterr   r
   r   r+   3   s   
z*PostGISSchemaEditor._alter_column_type_sql)__name__
__module____qualname__r'   r$   r"   r,   r-   r   r   r   r+   __classcell__r
   r
   r   r   r      s    r   N)Z!django.db.backends.ddl_referencesr   Z$django.db.backends.postgresql.schemar   r   r
   r
   r
   r   <module>   s    