
#dV
                 @   s   d  d l  m Z d  d l m Z d  d l m Z m Z 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 y d  d	 l m Z e   Z Wn" e k
 r d  d
 l m Z Yn Xd  d l m Z m Z e d d    Z d S)    )settings)messages)load_backendlogin)ObjectDoesNotExist)redirect)escape)ugettext_lazy)staff_member_required)get_user_model)User)SWITCH_USER_ORIGINALSWITCH_USER_TARGETc             C   s  |  j  } |  j j d i | j d 6| j   d 6 } ya t j j d | d d d  } t |  s t j	 |  t j
 t d   t |  j j d   SWnf t k
 r t d	  i d
 d 6t | d  d 6} t j	 |  t j
 |  t |  j j d   SYn Xym t j j d | d d  } | | k rkt | |  rkt j	 |  t j
 t d   t |  j j d   SWnb t k
 rt d	  i d
 d 6t |  d 6} t j	 |  t j
 |  t |  j j d   SYn Xt | d  s"x? t j D]1 } | t |  j | j  k r| | _ PqqWn  t | d  rzt |  |  | j | j k rzi | j d 6| j   d 6|  j d <qzn  t |  j j d   S)Noriginal_useridusernamepkZis_staffTzPermission denied.r   z8%(name)s object with primary key %(key)r does not exist.r   namekeybackend)usersessiongetr   Zget_usernamer   objectsr   r   Zadd_messageERROR_r   GETr   r   r   hasattrr   ZAUTHENTICATION_BACKENDSr   Zget_userr   r   r   )requestZ	object_idZcurrent_userZsession_userr   msgZtarget_userr    r    B/tmp/pip-build-0jahl3lb/django-grappelli/grappelli/views/switch.pyswitch_user   s<    	,($	*r"   N)Zdjango.confr   Zdjango.contribr   Zdjango.contrib.authr   r   Zdjango.core.exceptionsr   Zdjango.shortcutsr   Zdjango.utils.htmlr   Zdjango.utils.translationr	   r   Z%django.contrib.admin.views.decoratorsr
   r   r   ImportErrorZdjango.contrib.auth.modelsZgrappelli.settingsr   r   r"   r    r    r    r!   <module>   s   