

_V                 @   s   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 Z Gd d   d e  Z Gd	 d
   d
 e  Z d S)    )
ModelAdmin)OpenLayersWidget)models)HAS_GDALOGRGeomType)ImproperlyConfiguredi  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 i d d 6Z d Z e  Z! e"   f d d    Z#   f d d   Z$ d d   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.htmlz,http://openlayers.org/api/2.13/OpenLayers.js   z&http://vmap0.tiles.osgeo.org/wms/vmap0basiczOpenLayers WMSz
image/jpegformatc                s9   t  t |   j } | j |  j g  | j |  j  | S)z-Injects OpenLayers JavaScript into the admin.)superr   mediaZadd_jsopenlayers_urlextra_js)selfr   )	__class__ B/tmp/pip-build-ghmbqnp_/Django/django/contrib/gis/admin/options.pyr   /   s    zGeoModelAdmin.mediac                sn   t  | t j  rQ | j d k  rQ | j d d  |  j |  | d <| j |   St t |   j	 | |  Sd S)z
        Overloaded from ModelAdmin so that an OpenLayersWidget is used
        for viewing/editing 2D GeometryFields (OpenLayers 2 does not support
        3D editing).
           requestNwidget)

isinstancer   ZGeometryFieldZdimpopget_map_widgetZ	formfieldr   r   formfield_for_dbfield)r   db_fieldkwargs)r   r   r   r   7   s
    !z#GeoModelAdmin.formfield_for_dbfieldc                s}    j  d k   rK  j  d k r- d   qQ t  j  j d d     n d   G     f d	 d
   d
  j  } | S)z
        Returns 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GEOMETRYCOLLECTIONZAnyZMULTI Nonec                   s  e  Z d  Z  j Z  j Z d Z  j r_ d d    j j   D Z d d j e  Z n  i!  j	 d 6 j
 d 6 j d 6 j p  j d	 6e  j  d
 6 j d 6 d 6 j d 6 j d 6  d 6 j d k d 6 j d/ k d 6 j d0 k d 6 j d1 k d 6 j d 6 j d 6 j d 6 j d 6 j d 6 j d  6 j d! 6 j d" 6 j d# 6 j d$ 6 j d% 6 j d& 6 j d' 6 j d( 6 j  d) 6 j! d* 6 j" d+ 6e d, 6 j d- 6Z# d. S)2z+GeoModelAdmin.get_map_widget.<locals>.OLMapr#   c             S   s   g  |  ] } d  |  q S)z%s: '%s'r   ).0pairr   r   r   
<listcomp>Z   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_typeZGEOMETRYZ
is_generic
LINESTRINGr    Zis_linestringPOLYGONr!   Z
is_polygonPOINTr   Zis_pointnum_zoommax_zoommin_zoomunitsmax_resolution
max_extent
modifiablemouse_position
scale_text	map_width
map_height
point_zoomZsriddisplay_sridwms_url	wms_layerwms_namewms_optionsdebugN)r2   r    )r3   r!   )r4   r   )$__name__
__module____qualname__map_templatetemplater,   rE   itemsjoinr(   r)   r*   rF   r+   r   namer/   r0   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   map_sridrA   rB   rC   rD   paramsr   )r1   r   r.   r   r   r   OLMapT   sN   			





















rQ   )z
MULTIPOINTzMULTILINESTRINGzMULTIPOLYGONr"   )r,   r   replacer   )r   r   rQ   r   )r1   r   r.   r   r   r   E   s    	(+zGeoModelAdmin.get_map_widget)&rG   rH   rI   __doc__r(   r)   r*   r+   rA   r   r5   r6   r7   r8   r9   r:   r;   r<   r=   r0   r/   r>   r?   rO   rJ   r   r@   rB   rC   rD   rE   rF   r   r   propertyr   r   r   r   r   )r   r   r   
   sB   
r   c                   sP   e  Z d  Z d Z d Z e Z d Z d Z e d Z	 d Z
   f d d   Z   S)	OSMGeoAdminzgis/admin/osm.html   z%-20037508,-20037508,20037508,20037508z156543.0339r   mc                s/   t  s t d   n  t t |   j |   d  S)Nz5OSMGeoAdmin is not usable without GDAL libs installed)r   r   r   rU   __init__)r   args)r   r   r   rX      s    zOSMGeoAdmin.__init__)rG   rH   rI   rJ   r5   spherical_mercator_sridrO   r:   r9   r@   r8   rX   r   r   )r   r   rU      s   
rU   N)Zdjango.contrib.adminr   Z django.contrib.gis.admin.widgetsr   Zdjango.contrib.gis.dbr   Zdjango.contrib.gis.gdalr   r   Zdjango.core.exceptionsr   rZ   r   rU   r   r   r   r   <module>   s   x