o
    uvXj  ã                   @   sd   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 dZ
G dd„ deƒZG d	d
„ d
eƒZdS )é    )Ú
ModelAdmin)ÚOpenLayersWidget)Úmodels)ÚOGRGeomType)ÚMediai  c                       s´   e Zd ZdZdZdZdZdZdZg Z	dZ
dZdZdZdZdZdZdZdZdZdZdZdZd	Zd
ZdZe
d ZdZdZdZddiZdZe Z!e"‡ fdd„ƒZ#‡ fdd„Z$dd„ Z%‡  Z&S )ÚGeoModelAdminz�
    The administration options class for Geographic models. Map settings
    may be overloaded from their defaults to create custom maps.
    r   é   Fé   TiX  i�  iæ  zgis/admin/openlayers.htmlzFhttps://cdnjs.cloudflare.com/ajax/libs/openlayers/2.13.1/OpenLayers.jsé   z&http://vmap0.tiles.osgeo.org/wms/vmap0ÚbasiczOpenLayers WMSÚformatz
image/jpegc                    s   t ƒ jt| jg| j d� S )z-Injects OpenLayers JavaScript into the admin.)Újs)ÚsuperÚmediar   Úopenlayers_urlÚextra_js)Úself©Ú	__class__© ú]/var/www/html/myproject/venv/lib/python3.10/site-packages/django/contrib/gis/admin/options.pyr   /   s   zGeoModelAdmin.mediac                    sJ   t |tjƒr|jdk r|  |¡|d< |jdi |¤ŽS tƒ j||fi |¤ŽS )z²
        Overloaded from ModelAdmin so that an OpenLayersWidget is used
        for viewing/editing 2D GeometryFields (OpenLayers 2 does not support
        3D editing).
        é   ÚwidgetNr   )Ú
isinstancer   ÚGeometryFieldÚdimÚget_map_widgetÚ	formfieldr   Úformfield_for_dbfield)r   Údb_fieldÚrequestÚkwargsr   r   r   r   4   s   z#GeoModelAdmin.formfield_for_dbfieldc                    sV   ˆj dv ‰ˆrˆj dkrd‰ ntˆj  dd¡ƒ‰ nd‰ G ‡ ‡‡‡fdd„dˆjƒ}|S )	z»
        Return a subclass of the OpenLayersWidget (or whatever was specified
        in the `widget` attribute) using the settings from the attributes set
        in this class.
        )Ú
MULTIPOINTÚMULTILINESTRINGÚMULTIPOLYGONÚGEOMETRYCOLLECTIONr%   ÚAnyÚMULTIÚ ÚNonec                       sh  e Zd Z”jZ”jZdZ”jr dd„ ”j ¡ D ƒZdd e¡ Zi d”j	“d”j
“d”j“d	”jp3”j“d
e”jƒ“d”j“d”“d”j“d”j“d” “d”jdk“d”jdv “d”jdv “d”jdv “d”j“d”j“d”j“i d”j“d”j“d”j“d”j“d”j“d ”j“d!”j“d"”j“d#”j“d$”j“d%”j“d&”j “d'”j!“d(”j"“d)e“d*”j“¥Z#d+S ),z+GeoModelAdmin.get_map_widget.<locals>.OLMapr(   c                 S   s   g | ]}d | ‘qS )z%s: '%s'r   )Ú.0Úpairr   r   r   Ú
<listcomp>V   s    z6GeoModelAdmin.get_map_widget.<locals>.OLMap.<listcomp>z, %sz, Údefault_lonÚdefault_latÚdefault_zoomÚdisplay_wktÚ	geom_typeÚ
field_nameÚis_collectionÚ
scrollableÚlayerswitcherÚcollection_typeÚ
is_genericÚGEOMETRYÚis_linestring)Ú
LINESTRINGr#   Ú
is_polygon)ÚPOLYGONr$   Úis_point)ÚPOINTr"   Únum_zoomÚmax_zoomÚmin_zoomÚunitsÚmax_resolutionÚ
max_extentÚ
modifiableÚmouse_positionÚ
scale_textÚ	map_widthÚ
map_heightÚ
point_zoomÚsridÚdisplay_sridÚwms_urlÚ	wms_layerÚwms_nameÚwms_optionsÚdebugN)$Ú__name__Ú
__module__Ú__qualname__Úmap_templateÚtemplate_namer1   rP   ÚitemsÚjoinr-   r.   r/   rQ   r0   r   Únamer4   r5   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   Úmap_sridrL   rM   rN   rO   Úparamsr   ©r6   r   r3   r   r   r   ÚOLMapP   s”    ÿþýü
ûúùø	÷
ö
õ
ô
ó
òñðïîíìëêéèçæåäãâá à!
ßr]   )r1   r   Úreplacer   )r   r   r]   r   r\   r   r   A   s   

,zGeoModelAdmin.get_map_widget)'rR   rS   rT   Ú__doc__r-   r.   r/   r0   rL   r   r?   r@   rA   rB   rC   rD   rE   rF   rG   r5   r4   rH   rI   rZ   rU   r   rJ   rM   rN   rO   rP   rQ   r   r   Úpropertyr   r   r   Ú__classcell__r   r   r   r   r   
   sF    r   c                   @   s,   e Zd ZdZdZeZdZdZed Z	dZ
dS )ÚOSMGeoAdminzgis/admin/osm.htmlé   z%-20037508,-20037508,20037508,20037508z156543.0339r
   ÚmN)rR   rS   rT   rU   r?   Úspherical_mercator_sridrZ   rD   rC   rJ   rB   r   r   r   r   rb      s    rb   N)Údjango.contrib.adminr   Ú django.contrib.gis.admin.widgetsr   Údjango.contrib.gis.dbr   Údjango.contrib.gis.gdalr   Údjango.formsr   re   r   rb   r   r   r   r   Ú<module>   s    u