
    g                         d dl mZ d dlmZ d dlmZ d dlmZ ddl	m
Z
 ddlmZ ddlmZ dd	lmZ dd
lmZ  G d de      Zy)    )find_library)settings)ImproperlyConfigured)DatabaseWrapper   )SpatiaLiteClient)DatabaseFeatures)SpatiaLiteIntrospection)SpatiaLiteOperations)SpatialiteSchemaEditorc                   F     e Zd ZeZeZeZe	Z
eZ fdZ fdZ fdZ xZS )r   c                     t        t        dd       ddt        d      fD cg c]  }|| c}| _        t	        |   |i | y c c}w )NSPATIALITE_LIBRARY_PATHzmod_spatialite.somod_spatialite
spatialite)getattrr   r   lib_spatialite_pathssuper__init__)selfargskwargsname	__class__s       /var/www/python.vincentserveurtest.ovh/public_html/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/spatialite/base.pyr   zDatabaseWrapper.__init__   sg     ";TB# \*		%
  	%
! 	$)&)	%
s   Ac                 d   t         |   |      }	 |j                  d       | j
                  D ]  }	 |j                  |        |S  t	        ddj                  | j
                        z        # t        $ r t	        d      w xY w# t        $ r t        t        dd       rt	        d      Y w xY w)NTzGSpatiaLite requires SQLite to be configured to allow extension loading.r   zeUnable to load the SpatiaLite library extension as specified in your SPATIALITE_LIBRARY_PATH setting.zHUnable to load the SpatiaLite library extension. Library names tried: %sz, )r   get_new_connectionenable_load_extensionAttributeErrorr   r   load_extension	Exceptionr   r   join)r   conn_paramsconnpathr   s       r   r   z"DatabaseWrapper.get_new_connection(   s    w)+6	&&t, --D
##D)  # . '*,0IId6O6O,PQ '  	&% 	  8%>E.P  s   A/ B/B%B/.B/c                 ,   t         |           | j                         5 }|j                  d       |j	                         g k(  r<| j
                  j                  dk  r|j                  d       n|j                  d       d d d        y # 1 sw Y   y xY w)Nz$PRAGMA table_info(geometry_columns);)   zSELECT InitSpatialMetaData(1)z!SELECT InitSpatialMetaDataFull(1))r   prepare_databasecursorexecutefetchallopsspatial_version)r   r)   r   s     r   r(   z DatabaseWrapper.prepare_databaseF   sk     "[[]fNNAB B&88++d2NN#BCNN#FG ]]s   A!B

B)__name__
__module____qualname__r   SchemaEditorClassr   client_classr	   features_classr
   introspection_classr   	ops_classr   r   r(   __classcell__)r   s   @r   r   r      s4    .#L%N1$I*$<	H 	H    r   N)ctypes.utilr   django.confr   django.core.exceptionsr   django.db.backends.sqlite3.baser   SQLiteDatabaseWrapperclientr   featuresr	   introspectionr
   
operationsr   schemar    r7   r   <module>rC      s1    $   7 T $ & 2 , *AH+ AHr7   