
    Dvg                     :    d dl mZ d dlmZ  G d de          ZdS )    )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                 H     t                      j        |i | g | _        d S N)super__init__geometry_sql)selfargskwargs	__class__s      m/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/django/contrib/gis/db/backends/spatialite/schema.pyr   zSpatialiteSchemaEditor.__init__    s-    $)&)))    c                 @    | j         j                            |          S r   )
connectionopsgeo_quote_name)r   names     r   r   z%SpatialiteSchemaEditor.geo_quote_name$   s    "11$777r   Fc                 b   ddl m} t          ||          s#t                                          |||          S | j                            | j        |                     |j	        j
                  |                     |j                  |j        |                     |j                  |j        t          |j                   dz             |j        rZ| j                            | j        |                     |j	        j
                  |                     |j                  dz             dS )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'   s4   >>>>>>%// 	E77%%eUODDD 	  (,,U[-ABB--el;;
!00AAy
N++ 
	
 
	
 
	
  	$$*!__U[-ABB"ooel;;    zr   c                    |                      | j        |                     |j        j                  |                     |j                  dz             |                      | j        |j        j        |j        dz             d S )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7 	
 	
 	
 	'-, 	
 	
 	
 	
 	
r   c                     t                                          |           | j        D ]}|                     |           g | _        d S r   )r   create_modelr   r4   )r   r0   sqlr   s      r   r9   z#SpatialiteSchemaEditor.create_modelT   sP    U###$ 	 	CLLr   c                 b   ddl m} |j        j        D ](}t	          ||          r|                     ||           )| j        D ]P}	 |                     | j        || 	                    |j        j
                  dz             A# t          $ r Y Mw xY w t                      j        |fi | d S )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&0!%1E!F!F     !   U--f-----s   =B
BBc                     ddl m} t          ||          r>|                     ||           | j        D ]}|                     |           g | _        d S t                                          ||           d S )Nr   r   )r%   r   r&   r'   r   r4   r   	add_field)r   r0   r1   r   r:   r   s        r   rB   z SpatialiteSchemaEditor.add_fieldp   s    >>>>>>e]++ 	,OOE5)))( " "S!!!! "DGGeU+++++r   c                     ddl m} t          ||          r|                     ||           d S t	                                          ||           d S )Nr   r   )delete_field)r%   r   r&   _remake_tabler   remove_field)r   r0   r1   r   r   s       r   rF   z#SpatialiteSchemaEditor.remove_field|   sh    >>>>>> e]++ 	/u599999GG  .....r   c                 p   ddl m} ||k    s;| j        j        j        r,|                                |                                k    rd S |j        j        D ]]}t          ||          rK| 	                    | j
        |                     |          |                     |j                  dz             ^t                                          |||           | j        D ]Z}	 | 	                    | j        ||                     |          |                     |          dz             K# t"          $ r Y Ww xY w|j        j        D ]}t          ||          rp| 	                    | j        |                     |          |                     |j                  |j        |                     |j                  |j        dz             t/          |dd          r\| 	                    | j        |                     d|d	|j                  |                     d|d	|j                  d
z             d S )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   >>>>>><''O$< (""$$(:(:(<(<<<F[- 	 	E%// 5!%!>!>"&//%,"?"?    	ulLAAA. 	 	J
4&0%)__\%B%B%)__\%B%B     !    [- 	 	E%// 
6!%!4!4\!B!B"&"5"5el"C"C %
%)%8%8%I%I$y 	 	 	 uou55 )%)___+7<<F& & &*___+7<<F& &	 
 
 
	 	s   "AD**
D76D7)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      s@       	,  OB	" " $Y C !	-  
  O    8 8 8     :
 
 
     . . . . .*
, 
, 
, 
, 
,/ / / / /9 9 9 9 9 9 9 9 9r   r   N)	django.dbr   !django.db.backends.sqlite3.schemar   r    r   r   <module>r]      sh    # # # # # # B B B B B B} } } } }1 } } } } }r   