B
    CVvg¿  ã               @   sT   d dl mZ d dlmZ d dlmZ G dd„ dƒZG dd„ deƒZ	G dd	„ d	ƒZ
d
S )é    )ÚLocal)Úsettings)Úcached_propertyc               @   s@   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dS )ÚConnectionProxyz5Proxy for accessing a connection object's attributes.c             C   s   || j d< || j d< d S )NÚ_connectionsÚ_alias)Ú__dict__)ÚselfÚconnectionsÚalias© r   ú;/tmp/pip-install-o3oxmrkh/Django/django/utils/connection.pyÚ__init__
   s    
zConnectionProxy.__init__c             C   s   t | j| j |ƒS )N)Úgetattrr   r   )r	   Úitemr   r   r   Ú__getattr__   s    zConnectionProxy.__getattr__c             C   s   t | j| j ||ƒS )N)Úsetattrr   r   )r	   ÚnameÚvaluer   r   r   Ú__setattr__   s    zConnectionProxy.__setattr__c             C   s   t | j| j |ƒS )N)Údelattrr   r   )r	   r   r   r   r   Ú__delattr__   s    zConnectionProxy.__delattr__c             C   s   || j | j kS )N)r   r   )r	   Úkeyr   r   r   Ú__contains__   s    zConnectionProxy.__contains__c             C   s   | j | j |kS )N)r   r   )r	   Úotherr   r   r   Ú__eq__   s    zConnectionProxy.__eq__N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r   r   r   r   r      s   r   c               @   s   e Zd ZdS )ÚConnectionDoesNotExistN)r   r   r   r   r   r   r   r       s   r    c               @   sf   e Zd ZdZeZdZddd„Zedd„ ƒZ	dd„ Z
d	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚBaseConnectionHandlerNFc             C   s   || _ t| jƒ| _d S )N)Ú	_settingsr   Úthread_criticalr   )r	   r   r   r   r   r   '   s    zBaseConnectionHandler.__init__c             C   s   |   | j¡| _| jS )N)Úconfigure_settingsr"   )r	   r   r   r   r   +   s    zBaseConnectionHandler.settingsc             C   s   |d krt t| jƒ}|S )N)r   Údjango_settingsÚsettings_name)r	   r   r   r   r   r$   0   s    z(BaseConnectionHandler.configure_settingsc             C   s   t dƒ‚d S )Nz.Subclasses must implement create_connection().)ÚNotImplementedError)r	   r   r   r   r   Úcreate_connection5   s    z'BaseConnectionHandler.create_connectionc             C   sZ   yt | j|ƒS  tk
r<   || jkr8|  d|› d¡‚Y nX |  |¡}t| j||ƒ |S )NzThe connection 'z' doesn't exist.)r   r   ÚAttributeErrorr   Úexception_classr(   r   )r	   r   Úconnr   r   r   Ú__getitem__8   s    

z!BaseConnectionHandler.__getitem__c             C   s   t | j||ƒ d S )N)r   r   )r	   r   r   r   r   r   Ú__setitem__B   s    z!BaseConnectionHandler.__setitem__c             C   s   t | j|ƒ d S )N)r   r   )r	   r   r   r   r   Ú__delitem__E   s    z!BaseConnectionHandler.__delitem__c             C   s
   t | jƒS )N)Úiterr   )r	   r   r   r   Ú__iter__H   s    zBaseConnectionHandler.__iter__c                s   ‡ fdd„ˆ D ƒS )Nc                s   g | ]}ˆ | ‘qS r   r   )Ú.0r   )r	   r   r   ú
<listcomp>L   s    z-BaseConnectionHandler.all.<locals>.<listcomp>r   )r	   r   )r	   r   ÚallK   s    zBaseConnectionHandler.all)N)r   r   r   r&   r    r*   r#   r   r   r   r$   r(   r,   r-   r.   r0   r3   r   r   r   r   r!   "   s   

r!   N)Zasgiref.localr   Zdjango.confr   r%   Zdjango.utils.functionalr   r   Ú	Exceptionr    r!   r   r   r   r   Ú<module>   s
   