
 X                 @   sm   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	 Gd d   d e	 j
  Z d S)	    )unicode_literals)settings)checks)FieldDoesNotExist)modelsc                   sm   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	   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__ K/home/ubuntu/projects/ifolica/build/django/django/contrib/sites/managers.pyr	      s    zCurrentSiteManager.__init__c                s/   t  t |   j |   } | 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 |  } Wn2 t k
 rY t j d | d |  d d g SYn X| j r t | t	 j
  r t j d |  j j j | f d |  d d g Sg  S)Nz5CurrentSiteManager could not find a field named '%s'.objidz
sites.E001zYCurrentSiteManager 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   sQ   |  j  sJ y |  j j j d  Wn t k
 r= d |  _  YqJ Xd |  _  n  |  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                s0   t  t |   j   j i t j |  j   d 6  S)NZ__id)r   r   get_querysetfilterr   ZSITE_IDr   )r   )r   r   r   r    >   s    zCurrentSiteManager.get_queryset)
__name__
__module____qualname____doc__Zuse_in_migrationsr	   r   r   r   r    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
   