
    g                     j    d dl Z d dlmZ d dlmZ d dlmZ  e j                  d      Z G d de      Z	y)    N)GeometryField)OperationalError)DatabaseSchemaEditorzdjango.contrib.gisc                   l     e Zd ZdZ fdZ fdZ fdZd fd	Z fdZ fdZ	 fdZ
d	 Zd
 Z xZS )MySQLGISSchemaEditorz7CREATE SPATIAL INDEX %(index)s ON %(table)s(%(column)s)c                 2    t        |   |i | g | _        y N)super__init__geometry_sql)selfargskwargs	__class__s      /var/www/python.vincentserveurtest.ovh/public_html/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/mysql/schema.pyr   zMySQLGISSchemaEditor.__init__   s    $)&)    c                 \    t        |t              r| j                  syt        |   |      S )NT)
isinstancer   $_supports_limited_data_type_defaultsr
   skip_default)r   fieldr   s     r   r   z!MySQLGISSchemaEditor.skip_default   s+     um,==w#E**r   c                     t        || j                  j                  j                        rt        |   t        |            S t        |   |      S r	   )r   
connectionopsAdapterr
   quote_valuestr)r   valuer   s     r   r   z MySQLGISSchemaEditor.quote_value   sA    eT__008897&s5z22w"5))r   c           	         t         |   |||      }t        |t              r|j                  r|j
                  s| j                  j                  j                  }|j                  j                  }| j                  j                  | j                   || j                  ||             ||       ||j                        dz         |S )N)indextablecolumn)r
   
column_sqlr   r   spatial_indexnullr   r   
quote_name_metadb_tabler   appendsql_add_spatial_index_create_spatial_index_namer"   )r   modelr   include_defaultr#   qnr(   r   s          r   r#   zMySQLGISSchemaEditor.column_sql    s    W'uoF
e]+0C0CEJJ$$//B{{++H$$** ? ?u MN\ . r   c                 D    t         |   |       | j                          y r	   )r
   create_modelcreate_spatial_indexes)r   r,   r   s     r   r0   z!MySQLGISSchemaEditor.create_model0   s    U###%r   c                 F    t         |   ||       | j                          y r	   )r
   	add_fieldr1   )r   r,   r   r   s      r   r3   zMySQLGISSchemaEditor.add_field4   s    %'##%r   c                 ,   t        |t              rN|j                  rB|j                  s6| j	                  ||      }| j                  ||      }	 | j                  |       t        | -  ||       y # t        $ r t        j                  d|       Y 2w xY w)Nz`Couldn't remove spatial index: %s (may be expected if your storage engine doesn't support them).)r   r   r$   r%   r+   _delete_index_sqlexecuter   loggererrorr
   remove_field)r   r,   r   
index_namesqlr   s        r   r9   z!MySQLGISSchemaEditor.remove_field8   s    e]+0C0CEJJ88FJ((
;CS! 	UE* $ Ds   A1 1BBc                 N    |j                   j                  d|j                  dS )N__id)r'   r(   r"   )r   r,   r   s      r   r+   z/MySQLGISSchemaEditor._create_spatial_index_nameG   s    "[[115<<@@r   c                     | j                   D ]  }	 | j                  |        g | _         y # t        $ r t        j	                  d| d       Y Cw xY w)NzCannot create SPATIAL INDEX z-. Only MyISAM, Aria, and InnoDB support them.)r   r6   r   r7   r8   )r   r;   s     r   r1   z+MySQLGISSchemaEditor.create_spatial_indexesJ   s[    $$CS! %  $ 23% 8$ %s   ,"AA)F)__name__
__module____qualname__r*   r   r   r   r#   r0   r3   r9   r+   r1   __classcell__)r   s   @r   r   r   
   s7    U+*
 &&+A	r   r   )
loggingdjango.contrib.gis.db.modelsr   	django.dbr   django.db.backends.mysql.schemar   	getLoggerr7   r    r   r   <module>rJ      s3     6 & @			/	0I/ Ir   