Ë
    ôrªit  ã                   óB   — d dl mZ d dlmZ d dlmZmZ  G d„ de«      Zy)é    )ÚGeometryField)ÚDatabaseSchemaEditor)ÚColÚFuncc                   óv   ‡ — 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	 dˆ fd„	Zd„ Zˆ fd„Z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     ú`/var/www/html/venv/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  | j                  ||d   fi |¤ŽS )Né   r   Úgeodeticr   )ÚlenÚhasattrr   Ú_create_index_sqlÚ_create_spatial_index_sql)r   r   r   Úkwargsr   s       €r   r"   z%PostGISSchemaEditor._create_index_sql   sX   ø€ Øˆ>œS ›[¨AÒ-´W¸VÀA¹YÈ
Ô5SÜ‘7Ñ,¨UÑL¸6ÐLÀVÑLÐLà-ˆt×-Ñ-¨e°V¸A±YÑIÀ&ÑIÐIr   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.
        Údimé   é   Ú )ÚcolumnÚ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   s	           €r   r-   z*PostGISSchemaEditor._alter_column_type_sql    sÈ   ø€ ô �y %Ô(´¸	À5Ô0IÜ‘7Ñ1Ø�y )¨X°}Àmóð ð �=‰=˜AÒ )§-¡-°1Ò"4Ø×3Ñ3‰IØ�]‰]˜aÒ I§M¡M°QÒ$6Ø×3Ñ3‰Ià×2Ñ2ˆIð à"Ÿo™o¨i×.>Ñ.>Ó?Ø$Ø!#ññð ðð ð
ð 	
r   c	           
      óF  •— t         ‰| �  ||||||||¬«       t        |t        «      xr |j                  }	t        |t        «      xr |j                  }
|	s$|
r"| j                  | j                  ||«      «       y |	r%|
s"| j                  | j                  ||«      «       y y y )N)Ústrict)r   Ú_alter_fieldÚ
isinstancer   r   Úexecuter#   Ú_delete_spatial_index_sql)r   r   r3   r4   Úold_typer5   Úold_db_paramsÚnew_db_paramsr:   Úold_field_spatial_indexÚnew_field_spatial_indexr   s              €r   r;   z PostGISSchemaEditor._alter_field>   s°   ø€ ô 	‰ÑØØØØØØØØð 	ô 		
ô �y¤-Ó0ÒL°Y×5LÑ5Lð 	 ô �y¤-Ó0ÒL°Y×5LÑ5Lð 	 ñ 'Ñ+BØ�L‰L˜×7Ñ7¸¸yÓIÕJÙ$Ñ-DØ�L‰L˜×7Ñ7¸¸yÓIÕJð .EÐ$r   c                 óf   — | j                  |j                  j                  |j                  gd«      S )NÚ_id)Ú_create_index_nameÚ_metaÚdb_tabler*   )r   r   r   s      r   Ú_create_spatial_index_namez.PostGISSchemaEditor._create_spatial_index_name_   s'   € Ø×&Ñ& u§{¡{×';Ñ';¸e¿l¹l¸^ÈUÓSÐSr   c                 óV  •— d }d }|g}|j                   dk(  r$t        t        d |«      | j                  ¬«      }d }n(|j                  dkD  r|j
                  s| j                  g}|j                  d«      x}s| j                  ||«      }t        ‰| �)  |||d| j                  z  ||¬«      S )NÚRASTER)Útemplater'   r   z	 USING %s)r   r   ÚusingÚ	opclassesÚexpressions)Ú	geom_typer   r   Úrast_index_templater&   Ú	geographyÚgeom_index_ops_ndÚgetrI   r   r"   Úgeom_index_type)	r   r   r   r$   rO   rN   r   r   r   s	           €r   r#   z-PostGISSchemaEditor._create_spatial_index_sqlb   s¹   ø€ ØˆØˆ	Ø�ˆØ�?‰?˜hÒ&ô œs 4¨Ó/¸$×:RÑ:RÔSˆKØ‰FØ�Y‰Y˜Š] 5§?¢?à×/Ñ/Ð0ˆIØŸ
™
 6Ó*Ð*�Ð*Ø×2Ñ2°5¸%Ó@ˆDä‰wÑ(ØØØØ × 4Ñ 4Ñ4ØØ#ð )ó 
ð 	
r   c                 óJ   — | j                  ||«      }| j                  ||«      S r   )rI   Ú_delete_index_sql)r   r   r   Ú
index_names       r   r>   z-PostGISSchemaEditor._delete_spatial_index_sqlz   s'   € Ø×4Ñ4°U¸EÓBˆ
Ø×%Ñ% e¨ZÓ8Ð8r   )F)Ú__name__Ú
__module__Ú__qualname__rU   rS   rQ   r.   r/   r   r   r"   r-   r;   rI   r#   r>   Ú__classcell__)r   s   @r   r   r      sa   ø„ Ø€OØ.ÐØ:Ðð 	Wð ð 	Wð ò8ô>ð
 26ö Jô
ðN õKòBTô
ö09r   r   N)Údjango.contrib.gis.db.modelsr   Ú$django.db.backends.postgresql.schemar   Údjango.db.models.expressionsr   r   r   © r   r   Ú<module>ra      s   ðÝ 6Ý Eß 2ôv9Ð.õ v9r   