o
    <g                     @   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   `/var/www/html/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r1|jdkr1| j}n| j}|| |j|dd g fg fS )z6
        Special case when dimension changed.
        r&   r       )r-   type	collation)	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old_collationnew_collation	sql_alterr   r   r   r4   5   s&   
	z*PostGISSchemaEditor._alter_column_type_sql)__name__
__module____qualname__r.   r(   r%   r5   r6   r
   r   r#   r4   __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    