o
    ˷e?                     @   s0   d dl mZ d dlmZmZ G dd deZdS )    )DatabaseSchemaEditor)ColFuncc                       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 )PostGISSchemaEditorGISTGIST_GEOMETRY_OPS_NDzST_ConvexHull(%(expressions)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   d/var/www/ideatree/venv/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 )N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 }d }d }|jdkr7ttd || jd}d }n|jdkrC|j	sC| j
g}|d}|sU| |jj|jgd	}t j|||d
| j ||dS )N   r   geodeticr   RASTER)template   r   _idz	 USING %s)r   r   using	opclassesexpressions)lenhasattrr   _create_index_sql	geom_typer   r   rast_index_templatedim	geographygeom_index_ops_ndget_create_index_name_metadb_tablecolumngeom_index_type)r   r   r   kwargsr   r    r   r   r   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_2dsql_alter_column_type
quote_namer-   )r   table	old_field	new_fieldnew_type	sql_alterr   r   r   r2   5   s    
z*PostGISSchemaEditor._alter_column_type_sql)__name__
__module____qualname__r.   r(   r%   r3   r4   r
   r   r#   r2   __classcell__r   r   r   r   r      s    r   N)$django.db.backends.postgresql.schemar   django.db.models.expressionsr   r   r   r   r   r   r   <module>   s    