U
    [+d                     @   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__ A/tmp/pip-unpacked-wheel-n7e__lmp/django/contrib/sites/managers.pyr	      s    
zCurrentSiteManager.__init__c                    s    t  jf |}||   |S r   )r   checkextend_check_field_name)r   kwargserrorsr   r   r   r      s    zCurrentSiteManager.checkc                 C   s|   |   }z| jj|}W n* tk
rD   tjd| | ddg Y S X |jsxt|t	j
sxt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:z| jjd W n tk
r2   d| _ Y nX d| _ | j S )z.Return self.__field_name or 'site' or 'sites'.sitesites)r
   r   r   r   r   r   r   r   r   r   0   s    z"CurrentSiteManager._get_field_namec                    s    t   jf |  d tjiS )NZ__id)r   get_querysetfilterr   r   ZSITE_IDr!   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   