3
g                 @   s,   d dl mZ d dlmZ G dd deZdS )    )DatabaseError)DatabaseSchemaEditorc                   s   e Zd ZdZdZdZdZdZdZdZ	dd	d
dgZ
 fddZdd Zd  fdd	Zdd Z fddZ fddZ fddZ fddZd! fdd	Z  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)sZgeometry_columnsZgeometry_columns_authZgeometry_columns_timeZgeometry_columns_statisticsc                s   t  j|| g | _d S )N)super__init__geometry_sql)selfargskwargs)	__class__ n/var/www/tester-filtro-web/env/lib/python3.6/site-packages/django/contrib/gis/db/backends/spatialite/schema.pyr      s    zSpatialiteSchemaEditor.__init__c             C   s   | j jj|S )N)
connectionopsgeo_quote_name)r   namer   r   r   r   "   s    z%SpatialiteSchemaEditor.geo_quote_nameFc          	      s   ddl m} t||s&t j|||S | jj| j| j|j	j
| j|j|j| j|j|jt|j d  |jr| jj| j| j|j	j
| j|jd  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   r   r   r   %   s"    


z!SpatialiteSchemaEditor.column_sqlc             C   sH   | j | j| j|jj| j|jd  | j | j|jj|jd  d S )N)r   r   )executesql_remove_geometry_metadatar#   r   r   r   sql_drop_spatial_index)r   r$   r%   r   r   r   remove_geometry_metadata?   s    z/SpatialiteSchemaEditor.remove_geometry_metadatac                s0   t  j| x| jD ]}| j| qW g | _d S )N)r   create_modelr   r'   )r   r$   sql)r   r   r   r+   M   s    z#SpatialiteSchemaEditor.create_modelc                s   ddl m} x&|jjD ]}t||r| j|| qW xH| jD ]>}y$| j| j|| j	|jj
d  W q< tk
rx   Y q<X q<W t j|f| d S )Nr   )r   )
geom_tabler   )r   r   r   local_fieldsr   r*   geometry_tablesr'   sql_discard_geometry_columnsr#   r   r   r   delete_model)r   r$   r
   r   r%   r-   )r   r   r   r1   T   s    

z#SpatialiteSchemaEditor.delete_modelc                sV   ddl m} t||rD| j|| x| jD ]}| j| q*W g | _nt j|| d S )Nr   )r   )r   r   r   r   r   r'   r   	add_field)r   r$   r%   r   r,   )r   r   r   r2   h   s    
z SpatialiteSchemaEditor.add_fieldc                s8   ddl m} t||r&| j||d nt j|| d S )Nr   )r   )Zdelete_field)r   r   r   Z_remake_tabler   remove_field)r   r$   r%   r   )r   r   r   r3   s   s    
z#SpatialiteSchemaEditor.remove_fieldTc                sD  ddl m} x>|jjD ]2}t||r| j| j| j|| j|jd  qW t	 j
|||| xL| jD ]B}y(| j| j|| j|| j|d  W qf tk
r   Y qfX qfW x|jjD ]}t||r| j| j| j|| j|j|j| j|j|jd  t|ddr| j| j| jd||jf | jd||jf d	  qW d S )
Nr   )r   )r   r   )r-   	old_table	new_table)r   r   r   r   r   r!   Fz	idx_%s_%s)r4   r5   )r   r   r   r.   r   r'   r(   r#   r   r   alter_db_tabler/   sql_update_geometry_columnsr   sql_recover_geometry_metadatar   r   r   r   getattrZsql_rename_table)r   r$   Zold_db_tableZnew_db_tableZdisable_constraintsr   r%   r-   )r   r   r   r6      s:    




z%SpatialiteSchemaEditor.alter_db_table)F)T)__name__
__module____qualname__r   r"   r)   r8   r(   r0   r7   r/   r   r   r   r*   r+   r1   r2   r3   r6   __classcell__r   r   )r   r   r      s(   r   N)Z	django.dbr   Z!django.db.backends.sqlite3.schemar   r   r   r   r   r   <module>   s   