a
    ÛEb�  ã                   @   sf   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e	 
¡ iZe  d¡ZG dd	„ d	eƒZdS )
é    N)ÚGDALException)ÚGEOSExceptionÚGEOSGeometry)ÚTextarea)ÚtranslationZLANGUAGE_BIDIzdjango.contrib.gisc                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚOpenLayersWidgetzA
    Render an OpenLayers map using the WKT of the geometry.
    c           	   
   C   s~  |r"| j  |¡ | j d | j d< n
d| j d< d| j d< |rŒt|tƒrŒzt|ƒ}W n: ttfyŠ } zt d||¡ d }W Y d }~n
d }~0 0 |r®|j	 
¡ | j	kr®| j	dkr®d }|  ¡ | j d< || j d	< | j d	  d
d¡}d| | j d< |�rl| j d }|j|k�r\z|j}| |¡ |j}W n< t�yX } z"t d|j||¡ d}W Y d }~n
d }~0 0 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)	Úselfr   ÚvalueÚattrsÚerrZjs_safe_namer   r   r
   © r    ú`/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/django/contrib/gis/admin/widgets.pyÚ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v rª| j| }n|t fv rÄd| 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_boundsZ   s    z/OpenLayersWidget.map_options.<locals>.ol_boundsc                 S   s   d|  S )Nz$new OpenLayers.Projection("EPSG:%s")r    )r   r    r    r!   Úol_projection]   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   r%   z"%s")r   ÚfloatÚintr   ÚgetÚ	TypeError)	r   r#   r$   Z	map_typesr   Ú
param_nameZjs_nameZoption_typer   r    r    r!   r   W   s2    ø

zOpenLayersWidget.map_optionsN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r"   r   r    r    r    r!   r      s   Dr   )ÚloggingZdjango.contrib.gis.gdalr   Zdjango.contrib.gis.geosr   r   Zdjango.forms.widgetsr   Zdjango.utilsr   Zget_language_bidir   Ú	getLoggerr   r   r    r    r    r!   Ú<module>   s   
