a
    KcòfÌ  ã                   @   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 )ÚPostGISSchemaEditorZGISTZ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   új/home/httpd/docs/test/DocsMgr/lib/python3.9/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 }d }d }|jdkrnttd |ƒ| jd�}d }n|jdkr†|j	s†| j
g}| d¡}|sª|  |jj|jgd	¡}tƒ j|||d
| j ||d�S )Né   r   Zgeodeticr   ZRASTER)Útemplateé   r
   Z_idz	 USING %s)r   r
   ÚusingÚ	opclassesÚexpressions)ÚlenÚhasattrr   Ú_create_index_sqlZ	geom_typer   r   Úrast_index_templateÚdimZ	geographyÚgeom_index_ops_ndÚgetZ_create_index_nameÚ_metaZ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rF|jdkrF| j}n"|jdkrb|jdkrb| j}n| j}||  |j¡|ddœ g fg fS )z6
        Special case when dimension changed.
        r   r   é   Ú )r#   ÚtypeZ	collation)	r   r   Ú_alter_column_type_sqlr   Úsql_alter_column_to_3dÚsql_alter_column_to_2dZsql_alter_column_typeZ
quote_namer#   )r	   ÚtableZ	old_fieldZ	new_fieldÚnew_typeZold_collationZnew_collationZ	sql_alterr   r   r   r)   5   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.postgresql.schemar   Zdjango.db.models.expressionsr   r   r   r   r   r   r   Ú<module>   s   