o
    þÞh1  ã                   @   sÆ   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 eG dd„ dƒƒZdd„ Zdd„ Ze			ddd„ƒZe			ddd„ƒZdS )é    N)Ú	dataclass©Úwraps)Úget_current_site)Ú	EmptyPageÚPageNotAnInteger)ÚHttp404)ÚTemplateResponse)Úreverse)Útimezone)Ú	http_datec                   @   s"   e Zd ZU eed< dZeed< dS )ÚSitemapIndexItemÚlocationNÚlast_mod)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__r   Úbool© r   r   ú]/var/www/html/premium_crap/venv/lib/python3.10/site-packages/django/contrib/sitemaps/views.pyr      s   
 r   c                    s   t ˆ ƒ‡ fdd„ƒ}|S )Nc                    s$   ˆ | g|¢R i |¤Ž}d|j d< |S )Nznoindex, noodp, noarchivezX-Robots-Tag)Úheaders)ÚrequestÚargsÚkwargsÚresponse©Úfuncr   r   Úinner   s   
zx_robots_tag.<locals>.innerr   )r   r   r   r   r   Úx_robots_tag   s   r    c                 C   sN   t |tjƒstj |tjj¡}t |¡rt |tjj¡}| du r"|S t	| |ƒS )z^
    Returns the latest `lastmod` where `lastmod` can be either a date or a
    datetime.
    N)
Ú
isinstanceÚdatetimeÚcombineÚtimeÚminr   Úis_naiveÚ
make_awareÚutcÚmax)Úcurrent_lastmodÚnew_lastmodr   r   r   Ú_get_latest_lastmod   s
   
r,   úsitemap_index.xmlúapplication/xmlú%django.contrib.sitemaps.views.sitemapc                 C   s  | j }t| ƒ}g }d}d }	| ¡ D ]W\}
}t|ƒr|ƒ }|jd u r#|n|j}t|d|
id�}d||j|f }| ¡ }|rH|d urFt|	|ƒ}	nd}| 	t
||ƒ¡ td|jjd ƒD ]}| 	t
d||f |ƒ¡ qYq|rv|	rvd	t|	 ¡ ƒi}nd }t| |d
|i||d�S )NTÚsection)r   z	%s://%s%sFé   é   z%s?p=%súLast-ModifiedÚsitemaps©Úcontent_typer   )Úschemer   ÚitemsÚcallableÚprotocolr
   ÚdomainÚget_latest_lastmodr,   Úappendr   ÚrangeÚ	paginatorÚ	num_pagesr   Ú	timestampr	   )r   r4   Útemplate_namer6   Úsitemap_url_nameÚreq_protocolÚreq_siteÚsitesÚall_indexes_lastmodÚlatest_lastmodr0   Úsiter:   Úsitemap_urlÚabsolute_urlÚsite_lastmodÚpager   r   r   r   Úindex*   s@   ÿÿûrN   úsitemap.xmlc              	   C   s  | j }t| ƒ}|d ur||vrtd| ƒ‚|| g}n| ¡ }| j dd¡}d }	d}
g }|D ]C}z(t|ƒr8|ƒ }| |j|||d�¡ |
rWt	|dd ƒ}|d urUt
|	|ƒ}	nd}
W q. tye   td| ƒ‚ tyq   td	| ƒ‚w |
r�|	r~d
t|	 ¡ ƒind }nd }t| |d|i||d�S )Nz$No sitemap available for section: %rÚpr2   T)rM   rI   r:   rH   FzPage %s emptyzNo page '%s'r3   Úurlsetr5   )r7   r   r   ÚvaluesÚGETÚgetr9   ÚextendÚget_urlsÚgetattrr,   r   r   r   rA   r	   )r   r4   r0   rB   r6   rD   rE   ÚmapsrM   ÚlastmodÚall_sites_lastmodÚurlsrI   rL   r   r   r   r   Úsitemap[   sJ   €ÿûr\   )r-   r.   r/   )NrO   r.   )r"   Údataclassesr   Ú	functoolsr   Údjango.contrib.sites.shortcutsr   Údjango.core.paginatorr   r   Údjango.httpr   Údjango.template.responser	   Údjango.urlsr
   Údjango.utilsr   Údjango.utils.httpr   r   r    r,   rN   r\   r   r   r   r   Ú<module>   s0    
û0û