o
    \"<f«  ã                   @   sÒ   d dl mZ 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 d d
lmZ d dlmZmZ zd dlmZ eƒ ZW n ey`   d dlmZ Y nw edd„ ƒZdS )é    )Úsettings)Úmessages)Ústaff_member_required)Úload_backendÚlogin)ÚObjectDoesNotExist)ÚHttp404)Úredirect)Úescape)Úurl_has_allowed_host_and_scheme)Úgettext_lazy)ÚSWITCH_USER_ORIGINALÚSWITCH_USER_TARGET)Úget_user_model)ÚUserc           	      C   sÐ  | j }| j d|j| ¡ dœ¡}| j dd ¡}|d u s't||  ¡ h|  ¡ ds*t	ƒ ‚zt
jj|d dd}t|ƒsHt | tjtdƒ¡ t|ƒW S W n" tyk   td	ƒd
t|d ƒdœ }t | tj|¡ t|ƒ Y S w z"t
jj|dd}||krt||ƒst | tjtdƒ¡ t|ƒW S W n  ty®   td	ƒd
t|ƒdœ }t | tj|¡ t|ƒ Y S w t|dƒsÉtjD ]}|t|ƒ |j¡krÈ||_ nq·t|dƒrät| |ƒ |j|jkrä|j| ¡ dœ| jd< t|ƒS )NÚoriginal_user)ÚidÚusernamer	   )ÚurlÚallowed_hostsÚrequire_httpsr   T)ÚpkÚis_staffzPermission denied.z8%(name)s object with primary key %(key)r does not exist.r   )ÚnameÚkeyÚbackend)ÚuserÚsessionÚgetr   Úget_usernameÚGETr   Úget_hostÚ	is_securer   r   Úobjectsr   r   Úadd_messageÚERRORÚ_r	   r   r
   r   Úhasattrr   ÚAUTHENTICATION_BACKENDSr   Úget_userr   r   r   )	ÚrequestÚ	object_idÚcurrent_userÚsession_userÚredirect_urlr   ÚmsgÚtarget_userr   © r1   úM/var/www/html/kck/venv/lib/python3.10/site-packages/grappelli/views/switch.pyÚswitch_user   sX   ýÿ
þý
€ý

þ

r3   N)Údjango.confr   Údjango.contribr   Ú%django.contrib.admin.views.decoratorsr   Údjango.contrib.authr   r   Údjango.core.exceptionsr   Údjango.httpr   Údjango.shortcutsr	   Údjango.utils.htmlr
   Údjango.utils.httpr   Údjango.utils.translationr   r&   Úgrappelli.settingsr   r   r   r   ÚImportErrorÚdjango.contrib.auth.modelsr3   r1   r1   r1   r2   Ú<module>   s&   
ÿ