o
    ƒó·io  ã                   @   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
   úaC:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-packages\django/contrib/sites/models.pyÚ	<genexpr>   s   € 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   sl   |  ¡ }z|tvr| j|d�t|< t| W S  tjy5   t|ƒ\}}|tvr/| j|d�t|< t|  Y S w )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   s>   ddl m} t|ddƒr|j}|  |¡S |r|  |¡S tdƒ‚)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_keyr	   )	Ú__name__Ú
__module__Ú__qualname__Zuse_in_migrationsr    r(   r-   r/   r1   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   )r6   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)r2   r3   r4   Zdb_tabler   Zverbose_nameZverbose_name_pluralZorderingr
   r
   r
   r   ÚMetaZ   s
    
r:   c                 C   s   | j S r	   r0   r.   r
   r
   r   Ú__str__`   s   zSite.__str__c                 C   s   | j fS r	   r0   r.   r
   r
   r   Únatural_keyc   s   zSite.natural_keyN)r2   r3   r4   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w zt tj |¡j|jd�j= W dS  ttjfy5   Y dS w )zK
    Clear the cache (if primed) each time a site is saved or deleted.
    ÚinstanceÚusingr   N)	r   r   ÚKeyErrorr"   r>   r@   r   r&   r#   )ÚsenderÚkwargsr?   r@   r
   r
   r   Úclear_site_cacheg   s   ÿ ÿrD   )rB   )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"   rD   Úconnectr
   r
   r
   r   Ú<module>   s    6