3
g                 @   s   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 deeZdS )    )models)
WKTAdapter)BaseSpatialOperations)SpatialOperator)GEOSGeometryBase)wkb_r)Distance)DatabaseOperations)cached_propertyc               @   s   e Zd ZdZdZeZedd Zedd Z	edd Z
ed	d
 Zedd ZejejejejejfZedd Zdd Zdd Zdd ZdS )MySQLOperationsmysqlZST_c             C   s   | j jS )N)
connectionmysql_is_mariadb)self r   m/var/www/tester-filtro-web/env/lib/python3.6/site-packages/django/contrib/gis/db/backends/mysql/operations.pymariadb   s    zMySQLOperations.mariadbc             C   s
   | j j S )N)r   r   )r   r   r   r   r      s    zMySQLOperations.mysqlc             C   s
   | j d S )NzAsBinary(%s))geom_func_prefix)r   r   r   r   select   s    zMySQLOperations.selectc             C   s
   | j d S )NZGeomFromText)r   )r   r   r   r   	from_text    s    zMySQLOperations.from_textc             C   s   t ddt ddt ddt ddt ddt ddt ddt ddt d	dt d
dt ddt ddt ddd}| jjrt dd|d< |S )NZMBRContains)funcZMBROverlapsZ	MBRWithinZST_ContainsZ
ST_CrossesZST_DisjointZ	ST_EqualsZST_IntersectsZST_OverlapsZ
ST_TouchesZ	ST_Within)Z
bbcontainsZ
bboverlapsZ	containedcontainsZcrossesZdisjointequalsexactZ
intersectsoverlapsZsame_asZtouchesZwithinZ	ST_RelateZrelate)r   r   r   )r   	operatorsr   r   r   gis_operators$   s     zMySQLOperations.gis_operatorsc             C   s~   ddddddddd	d
dddddddh}| j jr^|jd |jddh | j jdk rz|jd n| j jdk rz|jdddh |S )NZAsGMLZAsKMLZAsSVGZAzimuthZBoundingCircleZForcePolygonCWZGeometryDistanceZLineLocatePointZ	MakeValidZMemSizeZ	PerimeterZPointOnSurfaceZReverseZScaleZ
SnapToGridZ	TransformZ	TranslateZGeoHashZIsValid
         Z	AsGeoJSON      )r   r   r   )r    r!   r    )r   r   removeupdateZmysql_versionadd)r   unsupportedr   r   r   unsupported_functions>   s    


z%MySQLOperations.unsupported_functionsc             C   s   |j S )N)Z	geom_type)r   fr   r   r   geo_db_typeO   s    zMySQLOperations.geo_db_typec             C   sJ   |d }t |tr@|j| jr&tdt|tj|j| j}n|}|gS )Nr   zMOnly numeric values of degree units are allowed on geodetic distance queries.)
isinstancer   Zgeodeticr   
ValueErrorgetattrZunit_attnameZ
units_name)r   r'   valueZlookup_typeZ
dist_paramr   r   r   get_distanceR   s    
zMySQLOperations.get_distancec                s8   t  j|jjdkrd |jj  fdd}|S )N   c                s,   | d k	r(t t|  }r$|_|S d S )N)r   
memoryviewsrid)r,   
expressionr   Zgeom)
geom_classreadr0   r   r   	converterf   s
    z9MySQLOperations.get_geometry_converter.<locals>.converter)r   r3   Zoutput_fieldr0   r2   )r   r1   r4   r   )r2   r3   r0   r   get_geometry_converter_   s    z&MySQLOperations.get_geometry_converterN)__name__
__module____qualname__namer   r   ZAdapterr
   r   r   r   r   r   r   ZCollectZExtentZExtent3DZMakeLineUnionZdisallowed_aggregatesr&   r(   r-   r6   r   r   r   r   r      s   r   N)Zdjango.contrib.gis.dbr   Z+django.contrib.gis.db.backends.base.adapterr   Z.django.contrib.gis.db.backends.base.operationsr   Z$django.contrib.gis.db.backends.utilsr   Z django.contrib.gis.geos.geometryr   Z%django.contrib.gis.geos.prototypes.ior   Zdjango.contrib.gis.measurer   Z#django.db.backends.mysql.operationsr	   Zdjango.utils.functionalr
   r   r   r   r   r   <module>   s   