
    h                     j    S SK r S SKJr  S SKJr  S SKJr  \ R                  " S5      r " S S\5      r	g)    N)GeometryField)OperationalError)DatabaseSchemaEditorzdjango.contrib.gisc                      ^  \ rS rSrSrU 4S jrU 4S jrU 4S jrSU 4S jjrU 4S jr	U 4S jr
U 4S	 jrS
 rS rSrU =r$ )MySQLGISSchemaEditor
   z7CREATE SPATIAL INDEX %(index)s ON %(table)s(%(column)s)c                 4   > [         TU ]  " U0 UD6  / U l        g N)super__init__geometry_sql)selfargskwargs	__class__s      ]/var/www/html/env/lib/python3.13/site-packages/django/contrib/gis/db/backends/mysql/schema.pyr   MySQLGISSchemaEditor.__init__   s    $)&)    c                 p   > [        U[        5      (       a  U R                  (       d  g[        TU ]  U5      $ )NT)
isinstancer   $_supports_limited_data_type_defaultsr   skip_default)r   fieldr   s     r   r   !MySQLGISSchemaEditor.skip_default   s.     um,,==w#E**r   c                    > [        XR                  R                  R                  5      (       a  [        TU ]  [        U5      5      $ [        TU ]  U5      $ r
   )r   
connectionopsAdapterr   quote_valuestr)r   valuer   s     r   r    MySQLGISSchemaEditor.quote_value   sB    e__0088997&s5z22w"5))r   c           	        > [         TU ]  XU5      n[        U[        5      (       a  UR                  (       a  UR
                  (       d  U R                  R                  R                  nUR                  R                  nU R                  R                  U R                  U" U R                  X5      5      U" U5      U" UR                  5      S.-  5        U$ )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'   MySQLGISSchemaEditor.column_sql    s    W'oF
e]++0C0CEJJ$$//B{{++H$$** ? ? MN\ . r   c                 D   > [         TU ]  U5        U R                  5         g r
   )r   create_modelcreate_spatial_indexes)r   r0   r   s     r   r5   !MySQLGISSchemaEditor.create_model0   s    U###%r   c                 D   > [         TU ]  X5        U R                  5         g r
   )r   	add_fieldr6   )r   r0   r   r   s      r   r9   MySQLGISSchemaEditor.add_field4   s    %'##%r   c                 F  > [        U[        5      (       aV  UR                  (       aE  UR                  (       d4  U R	                  X5      nU R                  X5      n U R                  U5        [        TU ]-  X5        g ! [         a    [        R                  SU5         N2f = f)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   r0   r   
index_namesqlr   s        r   r@   !MySQLGISSchemaEditor.remove_field8   s    e]++0C0CEJJ88FJ((;CS! 	U* $ Ds   A= = B B c                 R    UR                   R                  < SUR                  < S3$ )N__id)r+   r,   r&   )r   r0   r   s      r   r/   /MySQLGISSchemaEditor._create_spatial_index_nameG   s    "[[115<<@@r   c                     U R                    H  n U R                  U5        M     / U l         g ! [         a    [        R	                  SU S35         MG  f = f)NzCannot create SPATIAL INDEX z-. Only MyISAM, Aria, and InnoDB support them.)r   r=   r   r>   r?   )r   rB   s     r   r6   +MySQLGISSchemaEditor.create_spatial_indexesJ   s[    $$CS! %  $ 23% 8$ %s   .#AA)r   )F)__name__
__module____qualname____firstlineno__r.   r   r   r   r'   r5   r9   r@   r/   r6   __static_attributes____classcell__)r   s   @r   r   r   
   s<    U+*
 &&+A	 	r   r   )
loggingdjango.contrib.gis.db.modelsr   	django.dbr   django.db.backends.mysql.schemar   	getLoggerr>   r    r   r   <module>rV      s1     6 & @			/	0I/ Ir   