
    k"go                        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 Z G d d	ej                         Z G d
 dej$                        Zd Z ej*                  ee        ej*                  ee       y)    N)ImproperlyConfiguredValidationError)models)
pre_deletepre_save)split_domain_port)gettext_lazyc                 z      fdt         j                  D        }t        |      rt        t	        d      d      y)z\
    Validate that the given value contains no whitespaces to prevent common
    typos.
    c              3   &   K   | ]  }|v  
 y wN ).0svalues     T/var/www/html/djangosite/lib/python3.12/site-packages/django/contrib/sites/models.py	<genexpr>z0_simple_domain_name_validator.<locals>.<genexpr>   s     6qqEz6s   z2The domain name cannot contain any spaces or tabs.invalid)codeN)string
whitespaceanyr   _)r   checkss   ` r   _simple_domain_name_validatorr      s:    
 7F$5$56F
6{BC
 	
     c                   0    e Zd ZdZd Zd ZddZd Zd Zy)	SiteManagerTc                 Z    |t         vr| j                  |      }|t         |<   t         |   S )Npk)
SITE_CACHEget)selfsite_idsites      r   _get_site_by_idzSiteManager._get_site_by_id   s/    *$88w8'D"&Jw'""r   c                    |j                         }	 |t        vr| j                  |      t        |<   t        |   S # t        j                  $ r; t        |      \  }}|t        vr| j                  |      t        |<   t        |   cY S w xY w)N)domain__iexact)get_hostr!   r"   SiteDoesNotExistr   )r#   requesthostdomainports        r   _get_site_by_requestz SiteManager._get_site_by_request"   s    !
	&:%#'8848#@
4 d##   	&,T2LFDZ'%)XXVX%D
6"f%%	&s   )< AB
	B
Nc                     ddl m} t        |dd      r|j                  }| j	                  |      S |r| j                  |      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 zYou'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.confr2   getattrr3   r&   r0   r   )r#   r,   r2   r$   s       r   get_currentzSiteManager.get_current0   sU     	)8Y+&&G''00,,W55"<
 	
r   c                     i a y)z Clear the ``Site`` object cache.N)r!   r#   s    r   clear_cachezSiteManager.clear_cacheF   s	     
r   c                 &    | j                  |      S )Nr.   )r"   )r#   r.   s     r   get_by_natural_keyzSiteManager.get_by_natural_keyK   s    xxvx&&r   r   )	__name__
__module____qualname__use_in_migrationsr&   r0   r7   r:   r=   r   r   r   r   r      s!    #&
,
'r   r   c                       e Zd Z ej                   ed      degd      Z ej                   ed      d      Z e	       Z
 G d d	      Zd
 Zd Zy)r*   zdomain named   T)
max_length
validatorsuniquezdisplay name2   )rD   c                   6    e Zd ZdZ ed      Z ed      ZdgZy)	Site.Metadjango_siter%   sitesr.   N)r>   r?   r@   db_tabler   verbose_nameverbose_name_pluralorderingr   r   r   MetarI   Z   s!     yj:r   rP   c                     | j                   S r   r<   r9   s    r   __str__zSite.__str__`   s    {{r   c                     | j                   fS r   r<   r9   s    r   natural_keyzSite.natural_keyc   s    ~r   N)r>   r?   r@   r   	CharFieldr   r   r.   namer   objectsrP   rR   rT   r   r   r   r*   r*   O   s^    V	-12	F 6An-"=DmG r   r*   c                 *   |d   }|d   }	 t         |j                  = 	 t         t        j                  j                  |      j                  |j                        j                  = y# t        $ r Y Uw xY w# t        t        j                  f$ r Y yw xY w)zK
    Clear the cache (if primed) each time a site is saved or deleted.
    instanceusingr   N)	r!   r    KeyErrorr*   rW   rZ   r"   r.   r+   )senderkwargsrY   rZ   s       r   clear_site_cacher^   g   s     j!H7OEx{{#t||))%0444DKKL   d''( s#   A' AA6 '	A32A36BB)r\   )r   django.core.exceptionsr   r   	django.dbr   django.db.models.signalsr   r   django.http.requestr   django.utils.translationr	   r   r!   r   Managerr   Modelr*   r^   connectr   r   r   <module>rg      so     H  9 1 6


3'&.. 3'l6<< 0    !$ / 
  #D 1r   