
    k"g                     2    d dl mZ d dlmZ  G d de      Zy)    )DatabaseError)DatabaseSchemaEditorc                        e Zd ZdZdZdZdZdZdZdZ	g dZ
 fd	Zd
 Zd fd	Zd Z fdZ fdZ fdZ fdZ fdZ xZS )SpatialiteSchemaEditorz[SELECT AddGeometryColumn(%(table)s, %(column)s, %(srid)s, %(geom_type)s, %(dim)s, %(null)s)z0SELECT CreateSpatialIndex(%(table)s, %(column)s)z#DROP TABLE idx_%(table)s_%(column)szUSELECT RecoverGeometryColumn(%(table)s, %(column)s, %(srid)s, %(geom_type)s, %(dim)s)z3SELECT DiscardGeometryColumn(%(table)s, %(column)s)z9DELETE FROM %(geom_table)s WHERE f_table_name = %(table)szYUPDATE %(geom_table)s SET f_table_name = %(new_table)s WHERE f_table_name = %(old_table)s)geometry_columnsgeometry_columns_authgeometry_columns_timegeometry_columns_statisticsc                 2    t        |   |i | g | _        y N)super__init__geometry_sql)selfargskwargs	__class__s      i/var/www/html/djangosite/lib/python3.12/site-packages/django/contrib/gis/db/backends/spatialite/schema.pyr   zSpatialiteSchemaEditor.__init__    s    $)&)    c                 L    | j                   j                  j                  |      S r   )
connectionopsgeo_quote_name)r   names     r   r   z%SpatialiteSchemaEditor.geo_quote_name$   s    ""11$77r   c                    ddl m} t        ||      st        |   |||      S | j
                  j                  | j                  | j                  |j                  j                        | j                  |j                        |j                  | j                  |j                        |j                  t        |j                          dz         |j"                  rg| j
                  j                  | j$                  | j'                  |j                  j                        | j'                  |j                        dz         y)Nr   GeometryField)tablecolumnsrid	geom_typedimnullr   r   )NN)django.contrib.gis.db.modelsr   
isinstancer   
column_sqlr   appendsql_add_geometry_columnr   _metadb_tabler   r    r!   r"   intr#   spatial_indexsql_add_spatial_index
quote_name)r   modelfieldinclude_defaultr   r   s        r   r'   z!SpatialiteSchemaEditor.column_sql'   s   >%/7%eUODD 	  ((,,U[[-A-AB--ell;

!00Ayy

N+
	
 $$**!__U[[-A-AB"ooell; r   c                 <   | j                  | j                  | j                  |j                  j                        | j                  |j
                        dz         | j                  | j                  |j                  j                  |j
                  dz         y )Nr$   )executesql_remove_geometry_metadatar/   r*   r+   r   sql_drop_spatial_index)r   r0   r1   s      r   remove_geometry_metadataz/SpatialiteSchemaEditor.remove_geometry_metadataD   s|    --)=)=>//%,,7	
 	''--,,	
r   c                 v    t         |   |       | j                  D ]  }| j                  |        g | _        y r   )r   create_modelr   r4   )r   r0   sqlr   s      r   r9   z#SpatialiteSchemaEditor.create_modelT   s9    U#$$ 	CLL	r   c                 p   ddl m} |j                  j                  D ]!  }t	        ||      s| j                  ||       # | j                  D ]G  }	 | j                  | j                  || j                  |j                  j                        dz         I t        | 4  |fi | y # t        $ r Y fw xY w)Nr   r   )
geom_tabler   )r%   r   r*   local_fieldsr&   r7   geometry_tablesr4   sql_discard_geometry_columnsr/   r+   r   r   delete_model)r   r0   r   r   r1   r<   r   s         r   r@   z#SpatialiteSchemaEditor.delete_model[   s    > [[-- 	<E%/--eU;	< .. 
	J	55&0!%1E1E!F
	 	U-f- ! s   AB))	B54B5c                     ddl m} t        ||      r<| j                  ||       | j                  D ]  }| j                  |        g | _        y t        |   ||       y )Nr   r   )r%   r   r&   r'   r   r4   r   	add_field)r   r0   r1   r   r:   r   s        r   rB   z SpatialiteSchemaEditor.add_fieldp   sV    >e]+OOE5)(( "S!" "DGeU+r   c                 r    ddl m} t        ||      r| j                  ||       y t        |   ||       y )Nr   r   )delete_field)r%   r   r&   _remake_tabler   remove_field)r   r0   r1   r   r   s       r   rF   z#SpatialiteSchemaEditor.remove_field|   s4    > e]+u59G .r   c                    ddl m} ||k(  sA| j                  j                  j                  r"|j                         |j                         k(  ry |j                  j                  D ]X  }t        ||      s| j                  | j                  | j                  |      | j                  |j                        dz         Z t        | 9  |||       | j                  D ]C  }	 | j                  | j                   || j                  |      | j                  |      dz         E |j                  j                  D ]  }t        ||      ry| j                  | j$                  | j'                  |      | j'                  |j                        |j(                  | j'                  |j*                        |j,                  dz         t/        |dd      s| j                  | j0                  | j                  d|d	|j                        | j                  d|d	|j                        d
z          y # t"        $ r Y `w xY w)Nr   r   r$   )r<   	old_table	new_table)r   r   r    r!   r"   r-   Fidx__)rH   rI   )r%   r   r   featuresignores_table_name_caselowerr*   r=   r&   r4   r5   r/   r   r   alter_db_tabler>   sql_update_geometry_columnsr   sql_recover_geometry_metadatar   r    r!   r"   getattrsql_rename_table)r   r0   old_db_tablenew_db_tabler   r1   r<   r   s          r   rO   z%SpatialiteSchemaEditor.alter_db_table   s   ><'OO$$<<""$(:(:(<<[[-- 	E%/55!%!>"&//%,,"?	 	ulLA.. 	J
44&0%)__\%B%)__\%B	 [[-- 	E%/66!%!4!4\!B"&"5"5ell"C %

%)%8%8%I$yy	 uou5))%)__+7F& &*__+7F&	
	 ! s   !A H11	H>=H>)F)__name__
__module____qualname__r)   r.   r6   rQ   r5   r?   rP   r>   r   r   r'   r7   r9   r@   rB   rF   rO   __classcell__)r   s   @r   r   r      sz    	,  OB	" " $Y C !	-  
O8:
 .*
,/9 9r   r   N)	django.dbr   !django.db.backends.sqlite3.schemar   r    r   r   <module>r]      s    # B}1 }r   