a
    KcòfÅ  ã                   @   s¦   d dl Z d dlZd dlmZ d dlm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 e  d	¡ZG d
d„ deƒZG dd„ deƒZG dd„ deƒZdS )é    N)Úsettings)Úgdal)Ú
json_regex)ÚGEOSExceptionÚGEOSGeometry)ÚWidget)Útranslation)ÚRemovedInDjango51Warningzdjango.contrib.gisc                       sV   e Zd ZdZdZdZdZdZdZdZ	dZ
dd	d
„Zdd„ Zdd„ Z‡ fdd„Z‡  ZS )ÚBaseGeometryWidgetzc
    The base class for rich geometry widgets.
    Render a map using the WKT of the geometry.
    ZGEOMETRYéæ  éX  é�  FÚ Nc                 C   sl   i | _ dD ]}t| |ƒ| j |< q
|r4d|v sHd|v sH| jdksH| jdkrXtjdtdd� |rh| j  |¡ d S )	N)Ú	geom_typeÚmap_sridÚ	map_widthÚ
map_heightÚdisplay_rawr   r   r   r   zbThe map_height and map_width widget attributes are deprecated. Please use CSS to size map widgets.é   )ÚcategoryÚ
stacklevel)ÚattrsÚgetattrr   r   ÚwarningsÚwarnr	   Úupdate©Úselfr   Úkey© r   ú]/home/httpd/docs/test/DocsMgr/lib/python3.9/site-packages/django/contrib/gis/forms/widgets.pyÚ__init__   s(    ÿÿÿþýüzBaseGeometryWidget.__init__c                 C   s   |r
|j S dS ©Nr   )Zwkt©r   Úvaluer   r   r    Ú	serialize0   s    zBaseGeometryWidget.serializec              
   C   sH   z
t |ƒW S  tttfyB } zt d||¡ W Y d }~n
d }~0 0 d S )Nz,Error creating geometry from value '%s' (%s))r   r   Ú
ValueErrorÚ	TypeErrorÚloggerÚerror)r   r$   Úerrr   r   r    Údeserialize3   s
    
$zBaseGeometryWidget.deserializec                    sø   t ƒ  |||¡}|r(t|tƒr(|  |¡}|r”|jr”|j| jkr”z|j}| | j¡ |}W n: t	j
y’ } z t d|j| j|¡ W Y d }~n
d }~0 0 t	 | jd ¡j}| |  | j|d| dd¡ |  |¡|dkrÖdn|tjt ¡ dœ|pìi ¥¡¡ |S )	Nz<Error transforming geometry from srid '%s' to srid '%s' (%s)r   zgeodjango_%sú-Ú_ÚUnknownZGeometry)ÚnameÚmoduleZ
serializedr   Ú
STATIC_URLZLANGUAGE_BIDI)ÚsuperÚget_contextÚ
isinstanceÚstrr+   Úsridr   ÚogrZ	transformr   ZGDALExceptionr(   r)   ZOGRGeomTyper   r/   r   Zbuild_attrsÚreplacer%   r   r1   r   Zget_language_bidi)r   r/   r$   r   Úcontextr7   r*   r   ©Ú	__class__r   r    r3   :   s@    
üúùþÿzBaseGeometryWidget.get_context)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   Zsupports_3dÚtemplate_namer!   r%   r+   r3   Ú__classcell__r   r   r:   r    r
      s   
r
   c                       s:   e Zd ZdZdZG dd„ dƒZdd„ Z‡ fdd„Z‡  ZS )	ÚOpenLayersWidgetzgis/openlayers.htmli  c                   @   s   e Zd ZddiZdZdS )zOpenLayersWidget.MediaÚall)z-https://cdn.jsdelivr.net/npm/ol@v7.2.2/ol.csszgis/css/ol3.css)z1https://cdn.jsdelivr.net/npm/ol@v7.2.2/dist/ol.jszgis/js/OLMapWidget.jsN)r<   r=   r>   ÚcssÚjsr   r   r   r    ÚMediaf   s   ÿrF   c                 C   s   |r
|j S dS r"   )Újsonr#   r   r   r    r%   r   s    zOpenLayersWidget.serializec                    s0   t ƒ  |¡}|r,t |¡r,| jdkr,| j|_|S )Nr   )r2   r+   r   Úmatchr   r6   )r   r$   Zgeomr:   r   r    r+   u   s    zOpenLayersWidget.deserialize)	r<   r=   r>   r@   r   rF   r%   r+   rA   r   r   r:   r    rB   b   s
   rB   c                       s2   e Zd ZdZdZdZdZdZd	‡ fdd„	Z‡  Z	S )
Ú	OSMWidgetz3
    An OpenLayers/OpenStreetMap-based widget.
    zgis/openlayers-osm.htmlé   é/   é   Nc                    s8   t ƒ  ¡  dD ]}t| |ƒ| j|< q|r4| j |¡ d S )N)Údefault_lonÚdefault_latÚdefault_zoom)r2   r!   r   r   r   r   r:   r   r    r!   ‡   s
    
zOSMWidget.__init__)N)
r<   r=   r>   r?   r@   rM   rN   rO   r!   rA   r   r   r:   r    rI   }   s   rI   )Úloggingr   Zdjango.confr   Zdjango.contrib.gisr   Zdjango.contrib.gis.geometryr   Zdjango.contrib.gis.geosr   r   Zdjango.forms.widgetsr   Zdjango.utilsr   Zdjango.utils.deprecationr	   Ú	getLoggerr(   r
   rB   rI   r   r   r   r    Ú<module>   s   
S