ó
EõMPc           @  s  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
 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
 l m Z d  d l m Z d  d l m Z m Z d „  Z d d „ Z d e  e d „ Z! d e d „ Z" d S(   iÿÿÿÿ(   t   unicode_literals(   t   HttpResponset   Http404(   t   loader(   t   get_current_site(   t   urlresolvers(   t	   EmptyPaget   PageNotAnInteger(   t   GeometryField(   t   connectionst   DEFAULT_DB_ALIAS(   t	   get_model(   t   six(   t   ugettext(   t   render_to_kmlt   render_to_kmzc      
   C  s   t  |  ƒ } g  } |  j ƒ  r$ d p' d } xÊ | j ƒ  D]¼ \ } } t | ƒ ra | ƒ  j j } n | j j } t j d d i | d 6ƒ} | j d | | j	 | f ƒ | d k r7 x> t
 d | d ƒ D]& }	 | j d	 | | j	 | |	 f ƒ qÆ Wq7 q7 Wt j d
 i | d 6ƒ }
 t |
 d d ƒS(   uz   
    This view generates a sitemap index that uses the proper view
    for resolving geographic section sitemap URLs.
    u   httpsu   httpu)   django.contrib.gis.sitemaps.views.sitemapt   kwargsu   sectionu	   %s://%s%si   i   u   %s://%s%s?p=%su   sitemap_index.xmlu   sitemapst   content_typeu   application/xml(   R   t	   is_securet   itemst   callablet	   paginatort	   num_pagesR   t   reverset   appendt   domaint   rangeR   t   render_to_stringR   (   t   requestt   sitemapst   current_sitet   sitest   protocolt   sectiont   sitet   pagest   sitemap_urlt   paget   xml(    (    s:   ../Django//lib/python/django/contrib/gis/sitemaps/views.pyt   index   s    +c   	      C  sf  g  g  } } | d k	 rR | | k r> t t d ƒ | ƒ ‚ n  | j | | ƒ n t t j | ƒ ƒ } |  j j d d ƒ } t	 |  ƒ } x² | D]ª } yT t
 | ƒ rÉ | j | ƒ  j d | d | ƒ ƒ n | j | j d | d | ƒ ƒ Wq t k
 rt t d ƒ | ƒ ‚ q t k
 r8t t d ƒ | ƒ ‚ q Xq Wt j d i | d	 6ƒ } t | d
 d ƒS(   ub   
    This view generates a sitemap with additional geographic
    elements defined by Google.
    u$   No sitemap available for section: %ru   pi   R%   R"   u   Page %s emptyu   No page '%s'u   gis/sitemaps/geo_sitemap.xmlu   urlsetR   u   application/xmlN(   t   NoneR   t   _R   t   listR   t
   itervaluest   GETt   getR   R   t   extendt   get_urlsR   R   R   R   R   (	   R   R   R!   t   mapst   urlsR%   R   R"   R&   (    (    s:   ../Django//lib/python/django/contrib/gis/sitemaps/views.pyt   sitemap&   s&    %#c         C  sf  g  } t  | | ƒ } | s4 t d | | f ƒ ‚ n  | r… y2 | j j | ƒ } t | d t ƒ sk t ‚ n  Wq… t d ƒ ‚ q… Xn  t | }	 |	 j j	 r¼ | j
 j | ƒ j d | ƒ } n g  } |	 j j rò | j
 j | ƒ j d d | ƒ}
 n | j
 j | ƒ j ƒ  }
 x0 |
 D]( } t | | ƒ j | _ | j | ƒ qW| rLt } n t } | d i | d 6ƒ S(   uÁ   
    This view generates KML for the given app label, model, and field name.

    The model's default manager must be GeoManager, and the field name
    must be that of a geographic field.
    u?   You must supply a valid app label and module name.  Got "%s.%s"i    u   Invalid geometry field.t
   field_nameiæ  u   gis/kml/placemarks.kmlu   places(   R   R   t   _metat   get_field_by_namet
   isinstanceR   t	   ExceptionR	   t   opst   postgist   _default_managert   usingt   kmlt   oraclet	   transformt   allt   getattrR   R   R   (   R   t   labelt   modelR3   t   compressR;   t
   placemarkst   klasst   infot
   connectiont   qst   modt   render(    (    s:   ../Django//lib/python/django/contrib/gis/sitemaps/views.pyR<   B   s2    
!$	c      	   C  s   t  |  | | | d t d | ƒS(   uO   
    This view returns KMZ for the given app label, model, and field name.
    RC   R;   (   R<   t   True(   R   RA   RB   R3   R;   (    (    s:   ../Django//lib/python/django/contrib/gis/sitemaps/views.pyt   kmzn   s    N(#   t
   __future__R    t   django.httpR   R   t   django.templateR   t   django.contrib.sites.modelsR   t   django.coreR   t   django.core.paginatorR   R   t#   django.contrib.gis.db.models.fieldsR   t	   django.dbR	   R
   t   django.db.modelsR   t   django.utilsR   t   django.utils.translationR   R)   t   django.contrib.gis.shortcutsR   R   R'   R(   R2   t   FalseR<   RL   (    (    (    s:   ../Django//lib/python/django/contrib/gis/sitemaps/views.pyt   <module>   s   	,