U
    9d                     @   s:   d dl mZ d dlmZ d dlmZmZ G dd dZdS )    )Session)get_client_ip)UserLoginInUserc                   @   s   e Zd Zdd Zdd ZdS )OneSessionPerUserMiddlewarec                 C   s
   || _ d S )N)get_response)selfr    r	   </var/www/html/UseVoiceDocker/src/apps/accounts/middleware.py__init__	   s    z$OneSessionPerUserMiddleware.__init__c                 C   s   t |jtr|jjrzt|jjj}|r^||jjkr^ztjj	|d
  W n tjk
r\   Y nX |jj|jj_t||jj_|jj  W n. tjk
r   tjj|jtt|d Y nX | |}|S )N)session_key)userr   
ip_address)
isinstancer   r   is_authenticatedlogin_in_userr   sessionr   objectsgetdeleteDoesNotExistr   r   saver   creater   )r   requestZstored_session_keyresponser	   r	   r
   __call__   s    

z$OneSessionPerUserMiddleware.__call__N)__name__
__module____qualname__r   r   r	   r	   r	   r
   r      s   r   N)Zdjango.contrib.sessions.modelsr   apps.process.utilsr   Zapps.accounts.modelsr   r   r   r	   r	   r	   r
   <module>   s   