o
    þÞho  ã                   @   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
   ú[/var/www/html/premium_crap/venv/lib/python3.10/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   Ú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)Ú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.)Ú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__Úuse_in_migrationsr!   r*   r0   r2   r4   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_lengthÚ
validatorsÚuniquezdisplay nameé2   )r:   c                   @   s&   e Zd ZdZedƒZedƒZdgZdS )z	Site.MetaÚdjango_siter    Úsitesr(   N)r5   r6   r7   Údb_tabler   Úverbose_nameÚverbose_name_pluralÚorderingr
   r
   r
   r   ÚMetaZ   s
    
rD   c                 C   s   | j S r	   r3   r1   r
   r
   r   Ú__str__`   s   zSite.__str__c                 C   s   | j fS r	   r3   r1   r
   r
   r   Únatural_keyc   s   zSite.natural_keyN)r5   r6   r7   r   Ú	CharFieldr   r   r(   Únamer   ÚobjectsrD   rE   rF   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$   rI   rK   r   r(   r%   )ÚsenderÚkwargsrJ   rK   r
   r
   r   Úclear_site_cacheg   s   ÿ ÿrO   )rM   )r   Údjango.core.exceptionsr   r   Ú	django.dbr   Údjango.db.models.signalsr   r   Údjango.http.requestr   Údjango.utils.translationr   r   r   r   ÚManagerr   ÚModelr$   rO   Úconnectr
   r
   r
   r   Ú<module>   s    6