3
(h                 @   sR   d dl mZ 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 )	    )unicode_literals)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 t| j  || _d S )N)superr   __init___CurrentSiteManager__field_name)self
field_name)	__class__ A/tmp/pip-install-q3hcpn_q/Django/django/contrib/sites/managers.pyr	      s    zCurrentSiteManager.__init__c                s$   t t| jf |}|j| j  |S )N)r   r   checkextend_check_field_name)r   kwargserrors)r   r   r   r      s    zCurrentSiteManager.checkc             C   s|   | j  }y| jjj|}W n& tk
r@   tjd| | ddgS X |j rxt|t	j
 rxt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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   2   s    z"CurrentSiteManager._get_field_namec                s$   t t| j jf | j d tjiS )NZ__id)r   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)
__future__r   Zdjango.confr   Zdjango.corer   Zdjango.core.exceptionsr   Z	django.dbr   Managerr   r   r   r   r   <module>   s
   