
    k"g                     6    d dl mZ d dlmZmZ  G d de      Zy)    )DatabaseSchemaEditor)ColFuncc                   R     e Zd ZdZdZdZdZdZd Z fdZ	dd	 fd

Z
 fdZ x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                 L    | j                   j                  j                  |      S )N)
connectionopsgeo_quote_name)selfnames     f/var/www/html/djangosite/lib/python3.12/site-packages/django/contrib/gis/db/backends/postgis/schema.pyr   z"PostGISSchemaEditor.geo_quote_name   s    ""11$77    c                 @    t        |dd      ryt        | 	  ||      S )Nspatial_indexFT)getattrsuper_field_should_be_indexed)r   modelfield	__class__s      r   r   z,PostGISSchemaEditor._field_should_be_indexed   s$    5/51w/u==r   N)fieldsc                   |t        |      dk7  st        |d   d      st        |   |fd|i|S |d   }d }d }|j                  dk(  r$t        t        d |      | j                        }d }n(|j                  dkD  r|j                  s| j                  g}|j                  d      }|s2| j                  |j                  j                  |j                  gd	      }t        |   |||d
| j                   z  ||      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   s	           r   r'   z%PostGISSchemaEditor._create_index_sql   s   >S[A-WVAY
5S7,UL6LVLLq		??h& s4/$:R:RSKFYY]5??//0Izz&!**5;;+?+?%,,QVWDw( 4 44# ) 
 	
r   c                 l   t        |d      rt        |d      st        | 	  ||||||      S |j                  dk(  r|j                  dk(  r| j                  }n7|j                  dk(  r|j                  dk(  r| j
                  }n| j                  }|| j                  |j                        |ddz  g fg fS )z6
        Special case when dimension changed.
        r*   r        )r1   type	collation)	r&   r   _alter_column_type_sqlr*   sql_alter_column_to_3dsql_alter_column_to_2dsql_alter_column_type
quote_namer1   )	r   table	old_field	new_fieldnew_typeold_collationnew_collation	sql_alterr   s	           r   r9   z*PostGISSchemaEditor._alter_column_type_sql5   s     y%(	50I71y)X}m  ==A)--1"433I]]aIMMQ$633I22I "ooi.>.>?$!#  
 	
r   )__name__
__module____qualname__r2   r,   r)   r:   r;   r   r   r'   r9   __classcell__)r   s   @r   r   r      sH    O.: 	W  	W 8>
 26 
8
 
r   r   N)$django.db.backends.postgresql.schemar   django.db.models.expressionsr   r   r    r   r   <module>rL      s    E 2L
. L
r   