3
(h                 @   sv   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mZ dej iZe jdZG d	d
 d
eZdS )    N)GDALException)GEOSExceptionGEOSGeometry)Textarea)loader)sixtranslationZLANGUAGE_BIDIzdjango.contrib.gisc               @   s"   e Zd ZdZdddZdd ZdS )OpenLayersWidgetzB
    Renders an OpenLayers map using the WKT of the geometry.
    Nc       	      C   s  |r"| j j| | j d | j d< n
d| j d< d| j d< t|tjryt|}W n8 ttfk
r } ztj	d|| d }W Y d d }~X nX |r|j
j | j
kr| j
dkrd }| j | j d< || j d	< | j d	 jd
d}d| | j d< |rf| j d }|j|krVy|j}|j| |j}W n: tk
rR } ztj	d|j|| d}W Y d d }~X nX n|j}|| j d< | j jt tj| j| 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
isinstancer   string_typesr   r   
ValueErrorloggererrorZ	geom_typeupperr   replacer   ogrZ	transformr   r   geo_contextr   Zrender_to_stringtemplate)	selfr   valueattrserrZjs_safe_namer   r   r    r#   D/tmp/pip-install-q3hcpn_q/Django/django/contrib/gis/admin/widgets.pyrender   sD    







zOpenLayersWidget.renderc       	   
   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 }x|D ]\}}}| jj|drL|dkr||| j| }nN|dkr|| j| }n6|ttfkr| j| }n|t fkrd| j|  }nt|||< qLW |S )z8Builds the map options hash for the OpenLayers template.c             S   s   dt |  S )Nznew OpenLayers.Bounds(%s))str)Zextentr#   r#   r$   	ol_boundsV   s    z/OpenLayersWidget.map_options.<locals>.ol_boundsc             S   s   d|  S )Nz$new OpenLayers.Projection("EPSG:%s")r#   )r   r#   r#   r$   ol_projectionY   s    z3OpenLayersWidget.map_options.<locals>.ol_projectionr   
projectiondisplay_sriddisplayProjectionZunitsZmax_resolutionZmaxResolution
max_extent	maxExtentboundsZnum_zoomZnumZoomLevelsZmax_zoomZmaxZoomLevelsZmin_zoomZminZoomLevelFz"%s")r   r)   r   )r*   r+   r   )r,   r-   r.   )r&   floatintr   get	TypeError)	r   r'   r(   Z	map_typesr   
param_nameZjs_nameZoption_typer    r#   r#   r$   r   R   s0    
zOpenLayersWidget.map_options)N)__name__
__module____qualname____doc__r%   r   r#   r#   r#   r$   r	      s   
?r	   )loggingZdjango.contrib.gis.gdalr   Zdjango.contrib.gis.geosr   r   Zdjango.forms.widgetsr   Zdjango.templater   Zdjango.utilsr   r   Zget_language_bidir   	getLoggerr   r	   r#   r#   r#   r$   <module>   s   
