U
    !|e)#                     @   sB  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mZmZ d dlmZmZ d dlmZ d d	lmZmZ d d
lmZ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* e e(Z+e e* Z,e-eG dd dej.Z/e-eG dd dej.Z0dS )    )settings)adminmessages)IS_POPUP_VAR)unquote)update_session_auth_hash)AdminPasswordChangeFormUserChangeFormUserCreationForm)GroupUser)PermissionDenied)routertransaction)Http404HttpResponseRedirect)TemplateResponse)pathreverse)method_decorator)escape)gettext)gettext_lazy)csrf_protect)sensitive_post_parametersc                       s*   e Zd ZdZdZdZd fdd	Z  ZS )
GroupAdminname)permissionsNc                    sB   |j dkr*|d|jjj}|d|d< t j|fd|i|S )Nr   querysetcontent_typerequest)r   getremote_fieldmodelobjectsselect_relatedsuperformfield_for_manytomany)selfdb_fieldr!   kwargsqs	__class__ V/var/www/website-v5/atlas_env/lib/python3.8/site-packages/django/contrib/auth/admin.pyr(   "   s    
z#GroupAdmin.formfield_for_manytomany)N)__name__
__module____qualname__search_fieldsorderingfilter_horizontalr(   __classcell__r/   r/   r-   r0   r      s   r   c                       s   e Zd ZdZdZdddifedddifedddifed	dd
iffZddddffZeZ	e
ZeZdZdZdZdZdZd$ fdd	Zd% fdd	Z fddZ fddZeed&ddZd' fdd	Zed(d d!Zd) fd"d#	Z  ZS )*	UserAdminzadmin/auth/user/add_form.htmlNfields)usernamepasswordzPersonal info)
first_name	last_nameemailZPermissions)	is_activeis_staffis_superusergroupsuser_permissionszImportant dates)
last_logindate_joined)Zwide)r:   Z	password1Z	password2)classesr9   )r:   r>   r<   r=   r@   )r@   rA   r?   rB   )r:   r<   r=   r>   )r:   )rB   rC   c                    s   |s
| j S t ||S )N)add_fieldsetsr'   get_fieldsets)r)   r!   objr-   r/   r0   rH   U   s    zUserAdmin.get_fieldsetsc                    s2   i }|dkr| j |d< || t j||f|S )z7
        Use special form during user creation
        Nform)add_formupdater'   get_form)r)   r!   rI   r+   defaultsr-   r/   r0   rM   Z   s
    

zUserAdmin.get_formc                    s$   t d| j| jddgt   S )Nz<id>/password/Zauth_user_password_changer   )r   
admin_site
admin_viewuser_change_passwordr'   get_urls)r)   r-   r/   r0   rR   d   s    zUserAdmin.get_urlsc                    s   | d ot ||S )Nr;   )
startswithr'   lookup_allowed)r)   lookupvaluer-   r/   r0   rT   m   s     zUserAdmin.lookup_allowed c              
   C   s:   t jt| jd | |||W  5 Q R  S Q R X d S )N)using)r   atomicr   db_for_writer$   	_add_view)r)   r!   form_urlextra_contextr/   r/   r0   add_views   s    zUserAdmin.add_viewc                    sh   |  |s&| |r"tjr"tdt|d kr2i }| j| jj	}d|j
d}|| t |||S )NzYour user does not have the "Change user" permission. In order to add users, Django requires that your user account have both the "Add user" and "Change user" permissions set.r/   )Zauto_populated_fieldsZusername_help_text)has_change_permissionhas_add_permissionr   DEBUGr   r   opts	get_fieldr$   USERNAME_FIELD	help_textrL   r'   r^   )r)   r!   r\   r]   Zusername_fieldrN   r-   r/   r0   r[   y   s    

zUserAdmin._add_viewc                 C   sv  |  |t|}| ||s t|d krFttd| jjt|d |j	dkr| 
||j}| r|  | ||d }| ||| td}t|| t||j ttd| jj|jj|jjf |jfdS n
| 
|}d dt|jifg}tj !||i }	tdt|"  |	||t#|jkp0t#|j$kt#d	d
d
d	d
| j|d
d	d| j%|}
| jj|_&t'|| j(ppd|
S )Nz8%(name)s object with primary key %(key)r does not exist.)r   keyPOSTzPassword changed successfully.z%s:%s_%s_change)argsr9   zChange password: %sTF)titleZ	adminFormr\   rJ   is_popupis_popup_varaddchangehas_delete_permissionr_   has_absolute_urlrb   originalsave_as	show_savez$admin/auth/user/change_password.html))
get_objectr   r_   r   r   _rb   verbose_namer   methodchange_password_formrg   is_validsaveconstruct_change_message
log_changer   r   successr   userr   r   rO   r   _meta	app_label
model_namepklistbase_fieldsr   helpers	AdminFormget_usernamer   GETeach_contextcurrent_appr   change_user_password_template)r)   r!   idr\   r}   rJ   change_messagemsg	fieldsets
admin_formcontextr/   r/   r0   rQ      sv    



zUserAdmin.user_change_passwordc                    s:   d|j kr*t|j kr*|j  |_ d|j d< t |||S )z
        Determine the HttpResponse for the add_view stage. It mostly defers to
        its superclass implementation but is customized because the User model
        has a slightly different workflow.
        _addanother   	_continue)rg   r   copyr'   response_add)r)   r!   rI   post_url_continuer-   r/   r0   r      s    
zUserAdmin.response_add)N)N)rW   N)rW   N)rW   )N)r1   r2   r3   add_form_templater   rt   r   rG   r	   rJ   r
   rK   r   rw   list_displaylist_filterr4   r5   r6   rH   rM   rR   rT   sensitive_post_parameters_mcsrf_protect_mr^   r[   rQ   r   r7   r/   r/   r-   r0   r8   +   sH   
 	
	Br8   N)1django.confr   Zdjango.contribr   r   django.contrib.admin.optionsr   django.contrib.admin.utilsr   django.contrib.authr   Zdjango.contrib.auth.formsr   r	   r
   django.contrib.auth.modelsr   r   django.core.exceptionsr   	django.dbr   r   django.httpr   r   django.template.responser   django.urlsr   r   django.utils.decoratorsr   django.utils.htmlr   django.utils.translationr   r   rt   django.views.decorators.csrfr   django.views.decorators.debugr   r   r   register
ModelAdminr   r8   r/   r/   r/   r0   <module>   s.   
