î
Ý^Q\†  ã               @   s”   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	 m
 Z
 i e
 j ƒ  d 6Z e  j d ƒ Z Gd d	 „  d	 e ƒ Z d S)
é    N)ÚGDALException)ÚGEOSExceptionÚGEOSGeometry)ÚTextarea)ÚsixÚtranslationZLANGUAGE_BIDIzdjango.contrib.gisc               @   s.   e  Z d  Z d Z d d „  Z d d „  Z d S)ÚOpenLayersWidgetzB
    Renders an OpenLayers map using the WKT of the geometry.
    c       	      C   sø  | r- |  j  j | ƒ |  j  d |  j  d <n d |  j  d <d |  j  d <| r¹ t | t j ƒ r¹ y t | ƒ } Wq¹ t t f k
 rµ } z t j	 d | | ƒ d  } WYd  d  } ~ Xq¹ Xn  | rï | j
 j ƒ  |  j
 k rï |  j
 d k rï d  } n  |  j ƒ  |  j  d <| |  j  d	 <|  j  d	 j d
 d ƒ } d | |  j  d <| rá|  j  d } | j | k rÈy# | j } | j | ƒ | j } WqÑt k
 rÄ} z$ t j	 d | j | | ƒ d } WYd  d  } ~ XqÑXn	 | j } | |  j  d <n  |  j  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Ú
isinstancer   Ústring_typesr   r   Ú
ValueErrorÚloggerÚerrorZ	geom_typeÚupperr   Úreplacer   ÚogrZ	transformr   r   Úgeo_context)	Úselfr   ÚvalueÚattrsÚerrZjs_safe_namer   r   r   © r!   úF/var/www/dbchiro/venv/build/Django/django/contrib/gis/admin/widgets.pyÚget_context   sD    			zOpenLayersWidget.get_contextc       	   
   C   s8  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 ƒ rp | d k r¶ | |  j | ƒ } nm | d k rØ | |  j | ƒ } nK | t t f k rú |  j | } n) | t  f k rd |  j | } n t ‚ | | | <qp qp W| 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_boundsU   s    z/OpenLayersWidget.map_options.<locals>.ol_boundsc             S   s   d |  S)Nz$new OpenLayers.Projection("EPSG:%s")r!   )r   r!   r!   r"   Úol_projectionX   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")úsridr'   r-   )r(   r)   r-   )r*   r+   r,   )r$   ÚfloatÚintr   ÚgetÚ	TypeError)	r   r%   r&   Z	map_typesr   Z
param_nameZjs_nameZoption_typer   r!   r!   r"   r   Q   s0    zOpenLayersWidget.map_optionsN)Ú__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.utilsr   r   Zget_language_bidir   Ú	getLoggerr   r   r!   r!   r!   r"   Ú<module>   s   