U
    d                     @   sz   d dl Z d dlZd dlmZ d dlmZmZ d dlmZ d dl	m
Z
 d dlmZ de
 iZe dZG d	d
 d
eZdS )    N)GDALException)GEOSExceptionGEOSGeometry)Textarea)translation)RemovedInDjango50WarningZLANGUAGE_BIDIzdjango.contrib.gisc                       s0   e Zd ZdZ fddZdd Zdd Z  ZS )OpenLayersWidgetzA
    Render an OpenLayers map using the WKT of the geometry.
    c                    s"   t jdtdd t j|| d S )Nz8django.contrib.gis.admin.OpenLayersWidget is deprecated.   )
stacklevel)warningswarnr   super__init__)selfargskwargs	__class__ D/tmp/pip-unpacked-wheel-7vj2equ7/django/contrib/gis/admin/widgets.pyr      s    zOpenLayersWidget.__init__c           	   
   C   sz  |r"| j | | j d | j d< n
d| j d< d| j d< |rt|trzt|}W n8 ttfk
r } ztd|| d }W 5 d }~X Y nX |r|j	
 | j	kr| j	dkrd }|  | j d< || j d	< | j d	 d
d}d| | j d< |rh| j d }|j|krXz|j}|| |j}W n: tk
rT } ztd|j|| d}W 5 d }~X Y nX n|j}|| j d< | j t | j S )NZ
modifiableeditableT wktz,Error creating geometry from value '%s' (%s)ZGEOMETRYmap_optionsname-_zgeodjango_%smodulesridz<Error transforming geometry from srid '%s' to srid '%s' (%s))paramsupdate
isinstancestrr   r   
ValueErrorloggererrorZ	geom_typeupperr   replacer   ogrZ	transformr   r   geo_context)	r   r   valueattrserrZjs_safe_namer   r(   r   r   r   r   get_context   sR    






zOpenLayersWidget.get_contextc           	   
   C   s   dd }dd }ddddt fdd	tfd
ddtfddtfddtfg}i }|D ]\}}}| j|drJ|dkrz|| j| }nN|dkr|| j| }n6|ttfkr| j| }n|t fkrd| j|  }nt|||< qJ|S )z7Build the map options hash for the OpenLayers template.c                 S   s   d|  S )Nznew OpenLayers.Bounds(%s)r   )Zextentr   r   r   	ol_boundse   s    z/OpenLayersWidget.map_options.<locals>.ol_boundsc                 S   s   d|  S )Nz$new OpenLayers.Projection("EPSG:%s")r   )r   r   r   r   ol_projectionh   s    z3OpenLayersWidget.map_options.<locals>.ol_projection)r   Z
projectionr   )Zdisplay_sridZdisplayProjectionr   ZunitsZmax_resolutionZmaxResolution)Z
max_extentZ	maxExtentboundsZnum_zoomZnumZoomLevelsZmax_zoomZmaxZoomLevelsZmin_zoomZminZoomLevelFr   r0   z"%s")r"   floatintr   get	TypeError)	r   r.   r/   Z	map_typesr   
param_nameZjs_nameZoption_typer*   r   r   r   r   b   s2    

zOpenLayersWidget.map_options)__name__
__module____qualname____doc__r   r-   r   __classcell__r   r   r   r   r      s   Dr   )loggingr   Zdjango.contrib.gis.gdalr   Zdjango.contrib.gis.geosr   r   Zdjango.forms.widgetsr   Zdjango.utilsr   Zdjango.utils.deprecationr   Zget_language_bidir)   	getLoggerr$   r   r   r   r   r   <module>   s   
