o
    ˜¨Êh?  ã                   @   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/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 )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    