a
    Lcòfo  ã                   @   s¤   d dl 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 i add„ ZG d	d
„ d
ejƒZG dd„ dejƒZdd„ Zejeed� ejeed� dS )é    N)ÚImproperlyConfiguredÚValidationError)Úmodels)Ú
pre_deleteÚpre_save)Úsplit_domain_port)Úgettext_lazyc                    s0   ‡ fdd„t jD ƒ}t|ƒr,ttdƒdd�‚dS )z\
    Validate that the given value contains no whitespaces to prevent common
    typos.
    c                 3   s   | ]}|ˆ v V  qd S ©N© )Ú.0Ús©Úvaluer
   úX/home/httpd/docs/test/DocsMgr/lib/python3.9/site-packages/django/contrib/sites/models.pyÚ	<genexpr>   ó    z0_simple_domain_name_validator.<locals>.<genexpr>z2The domain name cannot contain any spaces or tabs.Úinvalid)ÚcodeN)ÚstringÚ
whitespaceÚanyr   Ú_)r   Zchecksr
   r   r   Ú_simple_domain_name_validator   s    þr   c                   @   s:   e Zd ZdZdd„ Zdd„ Zddd„Zd	d
„ Zdd„ ZdS )ÚSiteManagerTc                 C   s$   |t vr| j|d�}|t |< t | S )N©Úpk)Ú
SITE_CACHEÚget)ÚselfÚsite_idÚsiter
   r
   r   Ú_get_site_by_id   s    zSiteManager._get_site_by_idc                 C   sp   |  ¡ }z"|tvr"| j|d�t|< t| W S  tjyj   t|ƒ\}}|tvr^| j|d�t|< t|  Y S 0 d S )N)Zdomain__iexact)Úget_hostr   r   ÚSiteÚDoesNotExistr   )r   ÚrequestÚhostÚdomainÚportr
   r
   r   Ú_get_site_by_request"   s    
z SiteManager._get_site_by_requestNc                 C   sB   ddl m} t|ddƒr(|j}|  |¡S |r6|  |¡S tdƒ‚dS )a  
        Return the current Site based on the SITE_ID in the project's settings.
        If SITE_ID isn't defined, return the site with domain matching
        request.get_host(). The ``Site`` object is cached the first time it's
        retrieved from the database.
        r   )ÚsettingsÚSITE_IDÚ zÏYou're using the Django "sites framework" without having set the SITE_ID setting. Create a site in your database and set the SITE_ID setting or pass a request to Site.objects.get_current() to fix this error.N)Zdjango.confr*   Úgetattrr+   r!   r)   r   )r   r%   r*   r   r
   r
   r   Úget_current0   s    

ÿzSiteManager.get_currentc                 C   s   i a dS )z Clear the ``Site`` object cache.N)r   ©r   r
   r
   r   Úclear_cacheF   s    zSiteManager.clear_cachec                 C   s   | j |d�S )N©r'   )r   )r   r'   r
   r
   r   Úget_by_natural_keyK   s    zSiteManager.get_by_natural_key)N)	Ú__name__Ú
__module__Ú__qualname__Zuse_in_migrationsr!   r)   r.   r0   r2   r
   r
   r
   r   r      s   
r   c                   @   sZ   e Zd Zejedƒdegdd�Zejedƒdd�Ze	ƒ Z
G dd	„ d	ƒZd
d„ Zdd„ ZdS )r#   zdomain nameéd   T)Ú
max_lengthZ
validatorsÚuniquezdisplay nameé2   )r7   c                   @   s&   e Zd ZdZedƒZedƒZdgZdS )z	Site.MetaZdjango_siter    Úsitesr'   N)r3   r4   r5   Zdb_tabler   Zverbose_nameZverbose_name_pluralZorderingr
   r
   r
   r   ÚMetaZ   s   r;   c                 C   s   | j S r	   r1   r/   r
   r
   r   Ú__str__`   s    zSite.__str__c                 C   s   | j fS r	   r1   r/   r
   r
   r   Únatural_keyc   s    zSite.natural_keyN)r3   r4   r5   r   Z	CharFieldr   r   r'   Únamer   Úobjectsr;   r<   r=   r
   r
   r
   r   r#   O   s   ür#   c              	   K   sl   |d }|d }zt |j= W n ty.   Y n0 zt tj |¡j|jd�j= W n ttjfyf   Y n0 dS )zK
    Clear the cache (if primed) each time a site is saved or deleted.
    ÚinstanceÚusingr   N)	r   r   ÚKeyErrorr#   r?   rA   r   r'   r$   )ÚsenderÚkwargsr@   rA   r
   r
   r   Úclear_site_cacheg   s    rE   )rC   )r   Zdjango.core.exceptionsr   r   Z	django.dbr   Zdjango.db.models.signalsr   r   Zdjango.http.requestr   Zdjango.utils.translationr   r   r   r   ÚManagerr   ZModelr#   rE   Úconnectr
   r
   r
   r   Ú<module>   s   6