
    _?i                         d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	  e j                  d      Z G d de	      Z G d	 d
e      Z G d de      Zy)    N)gdal)
json_regex)GEOSExceptionGEOSGeometry)Widgetzdjango.contrib.gisc                   N     e Zd ZdZdZdZdZdZdZdZ	ddZ
d Zd	 Z fd
Z xZS )BaseGeometryWidgetzc
    The base class for rich geometry widgets.
    Render a map using the WKT of the geometry.
    NGEOMETRY  F c                     dD ci c]  }|t        | |       c}| _        |r| j                  j                  |       y y c c}w )N)
base_layer	geom_typemap_sriddisplay_raw)getattrattrsupdate)selfr   keys      r/home/cursorai/projects/django-cronjob-utils/venv/lib/python3.12/site-packages/django/contrib/gis/forms/widgets.py__init__zBaseGeometryWidget.__init__   sQ     N
M s##M

 JJe$ 	
s   A c                 "    |r|j                   S dS Nr   )wktr   values     r   	serializezBaseGeometryWidget.serialize!   s    !uyy)r)    c                     	 t        |      S # t        t        t        f$ r!}t        j                  d||       Y d }~y d }~ww xY w)Nz,Error creating geometry from value '%s' (%s))r   r   
ValueError	TypeErrorloggererror)r   r   errs      r   deserializezBaseGeometryWidget.deserialize$   sD    	U&&z95 	ULLGPSTT	Us   
 A=Ac                 N   t         |   |||      }|r!t        |t              r| j	                  |      }|rO|j
                  rC|j
                  | j                  k7  r*	 |j                  }|j                  | j                         |}| j                  |      |d<   t        j                  | j                  d         j                   }|dk(  rdn||d   d   d<   |S # t        j                  $ r6}t        j                  d|j
                  | j                  |       Y d }~d }~ww xY w)	Nz<Error transforming geometry from srid '%s' to srid '%s' (%s)
serializedr   UnknownGeometrywidgetr   	geom_name)superget_context
isinstancestrr&   sridr   ogr	transformr   GDALExceptionr#   r$   r   OGRGeomTyper   name)	r   r6   r   r   contextr2   r%   r   	__class__s	           r   r.   zBaseGeometryWidget.get_context+   s   '%dE59 Zs+$$U+EzzejjDMM9
))CMM$--0E !%u 5$$TZZ%<=BB	#y0Ji 	'";/  )) LLV

	 s   )C D$.,DD$N)__name__
__module____qualname____doc__r   r   r   r   supports_3dtemplate_namer   r   r&   r.   __classcell__r8   s   @r   r	   r	      sA    
 JIHKKM%* r   r	   c                   D     e Zd ZdZdZdZ G d d      Zd Z fdZ xZ	S )OpenLayersWidgetnasaWorldviewzgis/openlayers.htmli  c                       e Zd ZddiZdZy)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js r   r   MediarF   M   s     

r   rK   c                 "    |r|j                   S dS r   )jsonr   s     r   r   zOpenLayersWidget.serializeY   s    "uzz**r   c                     t         |   |      }|r5t        j                  |      r | j                  dk7  r| j                  |_        |S )Nr   )r-   r&   r   matchr   r1   )r   r   geomr8   s      r   r&   zOpenLayersWidget.deserialize\   s=    w"5)J$$U+0EDIr   )
r:   r;   r<   r   r?   r   rK   r   r&   r@   rA   s   @r   rC   rC   H   s+     J)MH

 

+ r   rC   c                   4     e Zd ZdZdZdZdZdZd fd	Z xZ	S )	OSMWidgetz3
    An OpenLayers/OpenStreetMap-based widget.
    osm   /      c                     |i }|j                  d| j                         |j                  d| j                         |j                  d| j                         t        |   |       y )Ndefault_londefault_latdefault_zoom)r   )
setdefaultrX   rY   rZ   r-   r   )r   r   r8   s     r   r   zOSMWidget.__init__n   s_    =E(8(89(8(89):):;u%r   r9   )
r:   r;   r<   r=   r   rX   rY   rZ   r   r@   rA   s   @r   rR   rR   d   s(     JKKL& &r   rR   )loggingdjango.contrib.gisr   django.contrib.gis.geometryr   django.contrib.gis.geosr   r   django.forms.widgetsr   	getLoggerr#   r	   rC   rR   rJ   r   r   <module>rb      sN     # 2 ? '			/	0: :z) 8&  &r   