
    Hwg                         d dl Z d dl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 d dlmZ d d	lmZ d d
lmZ d dlmZ e G d d             Zd Zd Ze	 	 	 dd       Ze	 	 	 dd       Zy)    N)	dataclasswraps)get_current_site)	EmptyPagePageNotAnInteger)Http404)TemplateResponse)reverse)timezone)RemovedInDjango50Warning)	http_datec                   ,    e Zd ZU eed<   dZeed<   d Zy)SitemapIndexItemlocationNlast_modc                 V    d}t        j                  |t        d       | j                  S )NzZCalling `__str__` on SitemapIndexItem is deprecated, use the `location` attribute instead.   )
stacklevel)warningswarnr   r   )selfmsgs     T/var/www/horilla/myenv/lib/python3.12/site-packages/django/contrib/sitemaps/views.py__str__zSitemapIndexItem.__str__   s)    ! 	 	c3B}}    )__name__
__module____qualname__str__annotations__r   boolr    r   r   r   r      s    MHdr   r   c                 .     t                fd       }|S )Nc                 >     | g|i |}d|j                   d<   |S )Nznoindex, noodp, noarchivezX-Robots-Tag)headers)requestargskwargsresponsefuncs       r   innerzx_robots_tag.<locals>.inner    s,    1$1&1+F(r   r   )r+   r,   s   ` r   x_robots_tagr-      s     
4[ 
 Lr   c                 L   t        |t        j                        s8t        j                  j                  |t        j                  j                        }t        j                  |      r.t        j                  |t        j
                  j                        }| |S t        | |      S )z^
    Returns the latest `lastmod` where `lastmod` can be either a date or a
    datetime.
    )

isinstancedatetimecombinetimeminr   is_naive
make_awareutcmax)current_lastmodnew_lastmods     r   _get_latest_lastmodr:   )   sy    
 k8#4#45''//X]]=N=NO%))+x7H7H7L7LM)1;Xs?K7XXr   c           	      |   | j                   }t        |       }g }d}d }	|j                         D ]  \  }
}t        |      r |       }|j                  |n|j                  }t        |d|
i      }|d|j                  |}|j                         }|r|t        |	|      }	nd}|j                  t        ||             t        d|j                  j                  dz         D ]"  }|j                  t        |d||             $  |r|	rd	t        |	j                               i}nd }t!        | |d
|i||      S )NTsection)r)   z://Fr      z?p=Last-Modifiedsitemapscontent_typer&   )schemer   itemscallableprotocolr   domainget_latest_lastmodr:   appendr   range	paginator	num_pagesr   	timestampr
   )r'   r?   template_namerA   sitemap_url_namereq_protocolreq_sitesitesall_indexes_lastmodlatest_lastmodr<   siterE   sitemap_urlabsolute_urlsite_lastmodpager&   s                     r   indexrY   5   sI    >>L(HEN!)  D>6D#'==#8<dmm.	77KL&.M..0'!4^\!R&+#%lLAB!T^^559: 	DLL lD!A<P	!, ~"In.F.F.H$IJ	U! r   c                 R   | j                   }t        |       }|||vrt        d|z        ||   g}n|j                         }| j                  j                  dd      }d }	d}
g }|D ]X  }	 t        |      r |       }|j                  |j                  |||             |
rt        |dd       }|t        |	|      }	nd}
Z |
r |	rd
t        |	j                               ind }nd }t        | |d|i||      S # t        $ r t        d|z        t        $ r t        d	|z        w xY w)Nz$No sitemap available for section: %rpr=   T)rX   rT   rE   rS   FzPage %s emptyzNo page '%s'r>   urlsetr@   )rB   r   r	   valuesGETgetrD   extendget_urlsgetattrr:   r   r   r   rL   r
   )r'   r?   r<   rM   rA   rO   rP   mapsrX   lastmodall_sites_lastmodurlsrT   rW   r&   s                  r   sitemaprg   f   s\    >>L(H("@7JKK!" ;;??3"DGD 1	1~vKK4hVW &t-=tD+1'<HG(-%1" GN?Ig.?.?.A$BCTX	4!   	2/D011 	1.4/00	1s   +AC88.D&)zsitemap_index.xmlapplication/xmlz%django.contrib.sitemaps.views.sitemap)Nzsitemap.xmlrh   )r0   r   dataclassesr   	functoolsr   django.contrib.sites.shortcutsr   django.core.paginatorr   r   django.httpr	   django.template.responser
   django.urlsr   django.utilsr   django.utils.deprecationr   django.utils.httpr   r   r-   r:   rY   rg   r#   r   r   <module>rs      s      !  ; =  5  ! = '   	Y  &"<- -`  "0 0r   