a
    9XhA                     @   sz   d dl mZ d dlmZ d dlmZ eeddZe Zdd Z	dd	d
Z
G dd dZG dd deZdd Zdd ZdS )    )settings)AnonymousUser)localZLOCAL_USER_ATTR_NAMEZ_current_userc                 C   s   t tt| | t d S N)setattr_thread_localsUSER_ATTR_NAME__get__r   )Zuser_fun r
   b/var/www/viveiro_mudafortebrasil/venv/lib/python3.9/site-packages/django_currentuser/middleware.py_do_set_current_user
   s    r   Nc                    s   t  fdd dS )z
    Sets current user in local thread.

    Can be used as a hook e.g. for shell jobs (when request object is not
    available).
    c                    s    S r   r
   selfuserr
   r   <lambda>       z#_set_current_user.<locals>.<lambda>Nr   r   r
   r   r   _set_current_user   s    r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )SetCurrentUserc                 C   s
   || _ d S r   )request)thisr   r
   r
   r   __init__   s    zSetCurrentUser.__init__c                    s   t  fdd d S )Nc                    s   t  jdd S )Nr   )getattrr   r   r   r
   r   r      r   z*SetCurrentUser.__enter__.<locals>.<lambda>r   r   r
   r   r   	__enter__   s    zSetCurrentUser.__enter__c                 C   s   t dd  d S )Nc                 S   s   d S r   r
   r   r
   r
   r   r       r   z)SetCurrentUser.__exit__.<locals>.<lambda>r   )r   typevalue	tracebackr
   r
   r   __exit__   s    zSetCurrentUser.__exit__N)__name__
__module____qualname__r   r   r   r
   r
   r
   r   r      s   r   c                   @   s   e Zd Zdd Zdd ZdS )ThreadLocalUserMiddlewarec                 C   s
   || _ d S r   )get_response)r   r$   r
   r
   r   r   %   s    z"ThreadLocalUserMiddleware.__init__c                 C   s6   t | | |}W d    n1 s(0    Y  |S r   )r   r$   )r   r   responser
   r
   r   __call__(   s    
(z"ThreadLocalUserMiddleware.__call__N)r    r!   r"   r   r&   r
   r
   r
   r   r#   #   s   r#   c                  C   s   t ttd } t| r|  S | S r   )r   r   r   callableZcurrent_userr
   r
   r   get_current_user1   s    r)   c                  C   s   t  } t| trd S | S r   )r)   
isinstancer   r(   r
   r
   r   get_current_authenticated_user8   s    
r+   )N)Zdjango.confr   Zdjango.contrib.auth.modelsr   	threadingr   r   r   r   r   r   r   objectr#   r)   r+   r
   r
   r
   r   <module>   s   

