
    Hwge$                         d dl 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 d dlmZmZ d d	lmZ d d
lmZ dZ G d de      ZdedfdZddZ G d d      Z G d de      Zy)    N)	urlencode)urlopen)apps)settings)	paginator)ImproperlyConfigured)NoReverseMatchreverse)translation)RemovedInDjango50Warningz,https://www.google.com/webmasters/tools/pingc                       e Zd Zy)SitemapNotFoundN)__name__
__module____qualname__     W/var/www/horilla/myenv/lib/python3.12/site-packages/django/contrib/sitemaps/__init__.pyr   r      s    r   r   Tc                 V    t        | |      }t        d|i      }t        |d|       y)a+  
    Alert Google that the sitemap for the current site has been updated.
    If sitemap_url is provided, it should be an absolute path to the sitemap
    for this site -- e.g., '/sitemap.xml'. If sitemap_url is not provided, this
    function will attempt to deduce it by using urls.reverse().
    sitemap?N)_get_sitemap_full_urlr   r   )sitemap_urlping_urlsitemap_uses_httpssitemap_full_urlparamss        r   ping_googler      s/     -[:LM	#345Fx()r   c                 ^   t        j                  d      st        d      | 	 t        d      } | t        d      t        j                  d      }|j                  j                         }|rdnd}|d	|j                  | S # t        $ r 	 t        d      } n# t        $ r Y nw xY wY |w xY w)
Ndjango.contrib.siteszAping_google requires django.contrib.sites, which isn't installed.z#django.contrib.sitemaps.views.indexz%django.contrib.sitemaps.views.sitemapzPYou didn't provide a sitemap_url, and the sitemap URL couldn't be auto-detected.
sites.Sitehttpshttp://)
django_appsis_installedr   r
   r	   r   	get_modelobjectsget_currentdomain)r   r   Sitecurrent_siteschemes        r   r   r       s    ##$:;"O
 	
 	!"GHK 
 	

   .D<<++-L*WF ,"5"5{CC!  	%&MN! 		s5   B 	B,BB,	B&#B,%B&&B,+B,c                       e Zd ZdZdZdZdZdZdZddZ	d Z
d Zd ZddZed	        Zd
 Zd ZddZddZddZd Zd Zy)SitemapiP  NFc                     	 t        | |      }t        |      r| j                  r|\  }} ||      S |S # t        $ r |cY S w xY wN)getattrAttributeErrorcallablei18n)selfnameitemdefaultattr	lang_codes         r   _getzSitemap._getR   sS    	4&D D>yy #'i:  	N	s   4 AAc                 "    | j                         S )z+Languages for which this item is displayed.)
_languagesr6   r8   s     r   get_languages_for_itemzSitemap.get_languages_for_item_   s      r   c                     | j                   | j                   S t        j                  D cg c]  \  }}|	 c}}S c c}}w r1   )	languagesr   	LANGUAGES)r6   r;   _s      r   r>   zSitemap._languagesc   s4    >>%>>!.6.@.@Ali	AAAs   <c                     | j                   r9| j                         D cg c]  }| j                  |      D ]  }||f  }}}|S | j                         S c c}}w r1   )r5   itemsr@   )r6   r8   r;   rF   s       r   _itemszSitemap._itemsh   sk    99
 !JJL!%!<!<T!B  y!!E 
 Lzz|s   !Ac                     | j                   r:|\  }}t        j                  |xs |      5  | j                  d|      cd d d        S | j                  d|      S # 1 sw Y   xY w)Nlocation)r5   r   overrider<   )r6   r8   force_lang_codeobjr;   s        r   	_locationzSitemap._locationt   s^    99!NC%%o&BC 3yyT23 3yyT**3 3s   AA"c                 ^    t        j                  | j                         | j                        S r1   )r   	PaginatorrG   limitr6   s    r   r   zSitemap.paginator|   s    ""4;;=$**==r   c                     g S r1   r   rQ   s    r   rF   zSitemap.items   s    	r   c                 "    |j                         S r1   )get_absolute_urlr?   s     r   rI   zSitemap.location   s    $$&&r   c                 ~    | j                   |t        j                  dt        d       | j                   xs |xs dS )NzThe default sitemap protocol will be changed from 'http' to 'https' in Django 5.0. Set Sitemap.protocol to silence this warning.   )category
stacklevelr#   )protocolwarningswarnr   )r6   rY   s     r   get_protocolzSitemap.get_protocol   s@    == X%5MM 2 }}22F2r   c                     |Rt        j                  d      r0t        j                  d      }	 |j                  j	                         }|t        d      |j                  S # |j
                  $ r Y *w xY w)Nr    r!   zbTo use sitemaps, either enable the sites framework or pass a Site/RequestSite object in your view.)r%   r&   r'   r(   r)   DoesNotExistr   r*   )r6   siter+   s      r   
get_domainzSitemap.get_domain   s|    <''(>?",,\:<<335D |*>  {{ (( s   A! !A32A3c                 l    | j                  |      }| j                  |      }| j                  |||      S r1   )r\   r`   _urls)r6   pager_   rY   r*   s        r   get_urlszSitemap.get_urls   s3    $$X.&zz$&11r   c                     t        | d      sy t        | j                        r9	 t        | j	                         D cg c]  }| j                  |       c}d       S | j                  S c c}w # t
        $ r Y y w xY w)Nlastmod)r9   )hasattrr4   rf   maxrF   	TypeErrorr?   s     r   get_latest_lastmodzSitemap.get_latest_lastmod   sl    tY'DLL!4::<H4DLL.HRVWW <<	 I s"   A- A(A- (A- -	A98A9c           	      <   g }d }d}| j                   j                  |      }|j                  D ]_  }| d| | j                  |       }	| j	                  d|      }
| j	                  d|      }|r|d u}|r	|||kD  r|}||	|| j	                  d|      t        |
|
nd      g d}| j                  r| j                  r| j                  |d         }|D ]2  }| d| | j                  ||       }	|d	   j                  |	|d
       4 | j                  rit        j                  |v rWt        j                  }| d| | j                  ||       }	|	j                  d| ddd      }	|d	   j                  |	dd
       |j                  |       b |r	|r|| _        |S )NTr$   priorityrf   
changefreq )r8   rI   rf   rm   rl   
alternatesr   ro   )rI   r;   /   z	x-default)r   rc   object_listrM   r<   strr5   ro   r@   append	x_defaultr   LANGUAGE_CODEreplacelatest_lastmod)r6   rc   rY   r*   urlsrx   all_items_lastmodpaginator_pager8   locrl   rf   url_infoitem_languagesr;   s                  r   rb   zSitemap._urls   s    ,,T2".. *	"DJc&$..*>)?@CyyT2Hii	40G $+4$7!$"*g.F%,N ""iid;H,@bI H yyT__!%!<!<T!W!E!/ I%Jc&$..y2Q1RSC\*11(+)2 >>h&<&<&N ( 6 6I%Jc&$..y2Q1RSC++)A&6Q?C\*11(+)4 KK!U*	"X "0Dr   r1   )rq   NN)r   r   r   rP   rY   r5   rB   ro   ru   r<   r@   r>   rG   rM   propertyr   rF   rI   r\   r`   rd   rj   rb   r   r   r   r/   r/   =   s}     E H D I J I!B

+ > >'3 2
	 5r   r/   c                   .    e Zd ZdZdZddZd Zd Zd Zy)GenericSitemapNc                     |d   | _         |j                  d      | _        | j                  xs || _        | j                  xs || _        | j
                  xs || _        y )Nqueryset
date_field)r   getr   rl   rm   rY   )r6   	info_dictrl   rm   rY   s        r   __init__zGenericSitemap.__init__   sN    !*-#--51//7Z1r   c                 6    | j                   j                         S r1   )r   filterrQ   s    r   rF   zGenericSitemap.items   s    }}##%%r   c                 H    | j                   t        || j                         S y r1   )r   r2   r?   s     r   rf   zGenericSitemap.lastmod   s     ??&411r   c                     | j                   Q| j                  j                  d| j                   z         j                  | j                   d      j	                         S y )N-T)flat)r   r   order_byvalues_listfirstrQ   s    r   rj   z!GenericSitemap.get_latest_lastmod   sJ    ??&&&sT__'<=T__48
 r   )NNN)	r   r   r   rl   rm   r   rF   rf   rj   r   r   r   r   r      s     HJ2&
r   r   )T)rZ   urllib.parser   urllib.requestr   django.appsr   r%   django.confr   django.corer   django.core.exceptionsr   django.urlsr	   r
   django.utilsr   django.utils.deprecationr   PING_URL	Exceptionr   r   r   r/   r   r   r   r   <module>r      sa     " " +   ! 7 / $ =9	i 	 !8 	*D:l l^W r   