U
    e1	                     @   s   d dl mZ d dlmZ d dlmZmZ d dlmZm	Z	 d dl
mZ d dlmZmZ d dlmZ dd	efd
dZdefddZdS )    )apps)GeometryField)AsKML	Transform)render_to_kmlrender_to_kmz)FieldDoesNotExist)DEFAULT_DB_ALIASconnections)Http404NFc                 C   s,  g }zt ||}W n$ tk
r8   td||f Y nX |rzz|j|}t|tsZtW n tk
rx   tdY nX t	| }	|	j
jr|j|jt|d}njg }|	j
jr|j|jf d| t|di}
|d7 }n|j| }
|
D ]}t||j|_|| q|rt}nt}|dd|iS )	z
    This view generates KML for the given app label, model, and field name.

    The field name must be that of a geographic field.
    z?You must supply a valid app label and module name.  Got "%s.%s"zInvalid geometry field.kmlz%s_4326i  Z_4326zgis/kml/placemarks.kmlZplaces)r   Z	get_modelLookupErrorr   Z_meta	get_field
isinstancer   r   r
   featuresZhas_AsKML_functionZ_default_managerusingZannotater   Zhas_Transform_functionr   allgetattrr   appendr   r   )requestlabelmodel
field_namecompressr   Z
placemarksklassfield
connectionqsmodrender r!   E/tmp/pip-unpacked-wheel-lctamlir/django/contrib/gis/sitemaps/views.pyr   
   sB    


r   c                 C   s   t | |||d|dS )zD
    Return KMZ for the given app label, model, and field name.
    T)r   r   r   )r   r   r   r   r   r!   r!   r"   kmz=   s    r#   )Zdjango.appsr   Zdjango.contrib.gis.db.modelsr   Z&django.contrib.gis.db.models.functionsr   r   Zdjango.contrib.gis.shortcutsr   r   Zdjango.core.exceptionsr   Z	django.dbr	   r
   Zdjango.httpr   r   r#   r!   r!   r!   r"   <module>   s   3