B
    ¨0H[‰  ã               @   sF   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jƒZ	dS )é    )Úsettings)Úchecks)ÚFieldDoesNotExist)Úmodelsc                   sN   e Zd ZdZdZd‡ fdd„	Z‡ fdd„Zdd	„ Zd
d„ Z‡ fdd„Z	‡  Z
S )ÚCurrentSiteManagerzDUse this to limit objects to those associated with the current site.TNc                s   t ƒ  ¡  || _d S )N)ÚsuperÚ__init__Ú_CurrentSiteManager__field_name)ÚselfÚ
field_name)Ú	__class__© úaC:\Users\HIRONO~1\AppData\Local\Temp\pip-install-6bm3nxem\django\django\contrib\sites\managers.pyr      s    
zCurrentSiteManager.__init__c                s    t ƒ jf |Ž}| |  ¡ ¡ |S )N)r   ÚcheckÚextendÚ_check_field_name)r
   ÚkwargsÚerrors)r   r   r   r      s    zCurrentSiteManager.checkc             C   sx   |   ¡ }y| jj |¡}W n& tk
r@   tjd| | dd�gS X |jstt|t	j
ƒsttjd| jjj|f | dd�gS g S )Nz5CurrentSiteManager could not find a field named '%s'.z
sites.E001)ÚobjÚidzYCurrentSiteManager cannot use '%s.%s' as it is not a foreign key or a many-to-many field.z
sites.E002)Ú_get_field_nameÚmodelÚ_metaÚ	get_fieldr   r   ÚErrorZmany_to_manyÚ
isinstancer   Z
ForeignKeyZobject_name)r
   r   Úfieldr   r   r   r      s    
z$CurrentSiteManager._check_field_namec             C   s@   | j s:y| jj d¡ W n tk
r2   d| _ Y nX d| _ | j S )z0 Return self.__field_name or 'site' or 'sites'. ÚsiteÚsites)r	   r   r   r   r   )r
   r   r   r   r   /   s    z"CurrentSiteManager._get_field_namec                s    t ƒ  ¡ jf |  ¡ d tjiŽS )NZ__id)r   Úget_querysetÚfilterr   r   ZSITE_ID)r
   )r   r   r   r   ;   s    zCurrentSiteManager.get_queryset)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Zuse_in_migrationsr   r   r   r   r   Ú__classcell__r   r   )r   r   r      s   r   N)
Zdjango.confr   Zdjango.corer   Zdjango.core.exceptionsr   Z	django.dbr   ÚManagerr   r   r   r   r   Ú<module>   s   