o
    ÖŸŽiÊ  ã                   @   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__© úgC:\Users\psant\Downloads\Anu Raj Backend\school\venv\Lib\site-packages\django/contrib/sites/managers.pyr	      s   

zCurrentSiteManager.__init__c                    s$   t ƒ jdi |¤Ž}| |  ¡ ¡ |S )Nr   )r   ÚcheckÚextendÚ_check_field_name)r   ÚkwargsÚerrorsr   r   r   r      s   zCurrentSiteManager.checkc                 C   sz   |   ¡ }z	| jj |¡}W n ty!   tjd| | dd�g Y S w |js;t|t	j
ƒs;t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   sB   | j sz	| jj d¡ W n ty   d| _ Y | j S w d| _ | j S )z.Return self.__field_name or 'site' or 'sites'.ÚsiteÚsitesN)r
   r   r   r   r   ©r   r   r   r   r   0   s   üz"CurrentSiteManager._get_field_namec                    s$   t ƒ  ¡ jdi |  ¡ d tji¤ŽS )NZ__idr   )r   Úget_querysetÚfilterr   r   ZSITE_IDr!   r   r   r   r"   <   s   þþÿzCurrentSiteManager.get_querysetr   )Ú__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
    