B
    ?c                 @   s   d dl mZ d dlmZ d dlmZmZ yd dlmZ W n  e	k
rX   d dl
mZ Y nX e Zdd Zdd Zd	d
 Zdd ZG dd deZdd Zeje dS )    )signals)MiddlewareMixin)SESSION_KEYBACKEND_SESSION_KEY)localc               C   s   t tdd S )Nuser)getattr_thread_locals r
   r
   1G:\easytimepro\master/mysite/base\threadlocals.pyget_current_user   s    r   c               C   s   t tdd S )Nreq)r   r	   r
   r
   r
   r   get_current_request   s    r   c               C   s   t tddS )uu   
    为了在异步中使用，在获取不到request的情况下 获取company_id
    :return: str(company.id)
    
company_idN)r   r	   r
   r
   r
   r   get_current_company_id   s    r   c             C   s
   | t _dS )u.  
    用于在发送邮件前设置company_id.
    当前的用法：
    1.使用get_current_company_id获取先前的company_id(以后备用)
    2.使用本方法设置当前真正的company_id.
    3.使用本方法重新设定回先前的company_id(备用)
    :param company_id:
    :return:
    N)r	   r   )r   r
   r
   r   set_current_company_id   s    
r   c               @   s   e Zd ZdZdd ZdS )ThreadLocalszhMiddleware that gets various objects from the
    request object and saves them in thread local storage.c             C   sF   |t _td t|drB|jrB|jt _|jjsB|jjsBt|jj d S )N r   )r	   r   r   hasattrr   Zis_anonymousZis_employeeZcurrent_company)selfZrequestr
   r
   r   process_request6   s    zThreadLocals.process_requestN)__name__
__module____qualname____doc__r   r
   r
   r
   r   r   2   s   r   c              K   s   d t _d t _d S )N)r	   r   r   )kwargsr
   r
   r   reset_requestF   s    r   N)Zdjango.corer   Zdjango.utils.deprecationr   Zdjango.contrib.authr   r   	threadingr   ImportErrorZdjango.utils._threading_localr	   r   r   r   r   r   r   Zrequest_startedZconnectr
   r
   r
   r   <module>   s   