o
    ~¨Êhr  ã                   @   st   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 G dd	„ d	eƒZe ¡ Zd
S )é    )Úviews)ÚSite)ÚNoReverseMatchÚreverse)Ú
cache_page)ÚListView)Úsettings)ÚRulec                       sv   e Zd ZdZeZdZejZ	dd„ Z
dd„ Zdd„ Zd	d
„ Zdd„ Z‡ fdd„Z‡ fdd„Zdd„ Z‡ fdd„Z‡  ZS )ÚRuleListzŒ
    Returns a generated robots.txt file with correct mimetype (text/plain),
    status code (200 or 404), sitemap url (automatically).
    Úrulesc                 C   s"   t jrtjj| ¡ d�S tj ¡ S )N)Údomain)r   ÚSITE_BY_REQUESTr   ÚobjectsÚgetÚget_hostÚget_current)ÚselfÚrequest© r   ú>/var/www/html/env/lib/python3.10/site-packages/robots/views.pyÚget_current_site   s   
zRuleList.get_current_sitec                 C   sV   zt jr
tt jƒW S ttjƒW S  ty*   zttjƒW  Y S  ty)   Y Y d S w w ©N)r   ÚSITEMAP_VIEW_NAMEr   Úsitemap_viewsÚindexr   Úsitemap©r   r   r   r   Úreverse_sitemap_url   s   ÿýzRuleList.reverse_sitemap_urlc                 C   s8   | j  ¡ rdpd}| jj d¡sd|| jjf S | jjS )NÚhttpsÚhttp©r   r   z%s://%s)r   Ú	is_secureÚcurrent_siter   Ú
startswith)r   Úschemer   r   r   Ú
get_domain'   s   zRuleList.get_domainc                 C   sT   t tjƒ}|s(tjr(|  ¡ }|d ur(| d¡sd|  ¡ |f }||vr(| |¡ |S )Nr    z%s%s)Úlistr   ÚSITEMAP_URLSÚUSE_SITEMAPr   r#   r%   Úappend)r   Úsitemap_urlsÚsitemap_urlr   r   r   Úget_sitemap_urls-   s   



zRuleList.get_sitemap_urlsc                 C   s   t jj| jd�S )N)Úsites)r	   r   Úfilterr"   r   r   r   r   Úget_queryset;   s   zRuleList.get_querysetc                    sV   t ƒ jdi |¤Ž}|  ¡ |d< tjr%tjr|  ¡ |d< |S | jj|d< |S d |d< |S )Nr*   Úhostr   )	ÚsuperÚget_context_datar,   r   ÚUSE_HOSTÚUSE_SCHEME_IN_HOSTr%   r"   r   )r   ÚkwargsÚcontext©Ú	__class__r   r   r2   >   s   ýÿzRuleList.get_context_datac                    s   t ƒ j|fddi|¤ŽS )NÚcontent_typez
text/plain)r1   Úrender_to_response)r   r6   r5   r7   r   r   r:   J   s   zRuleList.render_to_responsec                 C   s   | j S r   )Úcache_timeoutr   r   r   r   Úget_cache_timeoutM   s   zRuleList.get_cache_timeoutc                    sd   |   ¡ }|  |¡| _tƒ j}|s||g|¢R i |¤ŽS | jj}t||d�}||ƒ|g|¢R i |¤ŽS )N)Ú
key_prefix)r<   r   r"   r1   Údispatchr   r   )r   r   Úargsr5   r;   Úsuper_dispatchr=   Úcache_decoratorr7   r   r   r>   P   s   zRuleList.dispatch)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   ÚmodelÚcontext_object_namer   ÚCACHE_TIMEOUTr;   r   r   r%   r,   r/   r2   r:   r<   r>   Ú__classcell__r   r   r7   r   r
      s    r
   N)Údjango.contrib.sitemapsr   r   Údjango.contrib.sites.modelsr   Údjango.urlsr   r   Údjango.views.decorators.cacher   Údjango.views.genericr   Úrobotsr   Úrobots.modelsr	   r
   Úas_viewÚ
rules_listr   r   r   r   Ú<module>   s    P