3
(h."                 @   sJ  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mZmZ d dlmZ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&m'Z( d dl)m*Z* d dl+m,Z, e e*Z-e e, Z.ej/eG dd dej0Z1ej/eG dd dej0Z2dS )    )settings)url)adminmessages)IS_POPUP_VAR)unquote)update_session_auth_hash)AdminPasswordChangeFormUserChangeFormUserCreationForm)GroupUser)PermissionDenied)transaction)Http404HttpResponseRedirect)TemplateResponse)reverse)method_decorator)
force_text)escape)ugettextugettext_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                sF   |j dkr*|jd|jjj}|jd|d< tt| j|fd|i|S )Nr   Zquerysetcontent_typerequest)	r   getZremote_fieldmodelZobjectsZselect_relatedsuperr   formfield_for_manytomany)selfZdb_fieldr   kwargsqs)	__class__ =/tmp/pip-install-q3hcpn_q/Django/django/contrib/auth/admin.pyr#   !   s
    

z#GroupAdmin.formfield_for_manytomany)r   )r   )r   )N)__name__
__module____qualname__search_fieldsorderingfilter_horizontalr#   __classcell__r(   r(   )r'   r)   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d0Zd1 fdd	Zd2 fdd	Z fddZ fddZeeejd3 fd d!	Zed4d"d#Zd5 fd$d%	Z  ZS )6	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wide	password1	password2)classesr2   c                s   |s
| j S tt| j||S )N)add_fieldsetsr"   r1   get_fieldsets)r$   r   obj)r'   r(   r)   rD   E   s    zUserAdmin.get_fieldsetsc                s6   i }|dkr| j |d< |j| tt| j||f|S )z7
        Use special form during user creation
        Nform)add_formupdater"   r1   get_form)r$   r   rE   r%   defaults)r'   r(   r)   rI   J   s
    

zUserAdmin.get_formc                s(   t d| jj| jddgtt| j  S )Nz^(.+)/password/$Zauth_user_password_change)r   )r   
admin_siteZ
admin_viewuser_change_passwordr"   r1   get_urls)r$   )r'   r(   r)   rM   T   s
    zUserAdmin.get_urlsc                s    |j drdS tt| j||S )Nr4   F)
startswithr"   r1   lookup_allowed)r$   lookupvalue)r'   r(   r)   rO   ]   s    
zUserAdmin.lookup_allowed c                sn   | j |s&| j|r"tjr"tdt|d kr2i }| jjj| jj	}f |j
d}|j| tt| j|||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.)Zauto_populated_fieldsZusername_help_text)has_change_permissionZhas_add_permissionr   DEBUGr   r   r!   _meta	get_fieldZUSERNAME_FIELD	help_textrH   r"   r1   add_view)r$   r   form_urlZextra_contextZusername_fieldrJ   )r'   r(   r)   rX   c   s    



zUserAdmin.add_viewc             C   s  | j |st| j|t|}|d krJttdt| jjj	t
|d |jdkr| j||j}|j r|j  | j||d }| j||| td}tj|| t||j ttd| jj|jj|jjf |jfdS n
| j|}d dt|jifg}t j!j"||i }	tdt
|j#  |	||t$|jkp4t$|j%kd	d
d
d	d
| jj|d
d	d}
|
j&| jj'| | jj|_(t)|| j*pzd|
S )Nz8%(name)s object with primary key %(key)r does not exist.)r   keyPOSTzPassword changed successfully.z%s:%s_%s_change)argsr2   zChange password: %sTF)title	adminFormrY   rF   Zis_popupaddZchangeZhas_delete_permissionrS   Zhas_absolute_urloptsoriginalZsave_asZ	show_savez$admin/auth/user/change_password.html)+rS   r   Z
get_objectr   r   _r   r!   rU   Zverbose_namer   methodchange_password_formr[   Zis_validsaveZconstruct_change_messageZ
log_changer   r   successr   userr   r   rK   r   Z	app_labelZ
model_namepklistZbase_fieldsr   helpersZ	AdminFormZget_usernamer   GETrH   Zeach_contextZcurrent_appr   change_user_password_template)r$   r   idrY   rg   rF   Zchange_messagemsg	fieldsetsr^   contextr(   r(   r)   rL      s`    




zUserAdmin.user_change_passwordc                s2   d|j krt|j krd|j d< tt| j|||S )z
        Determines 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.
        Z_addanother   Z	_continue)r[   r   r"   r1   response_add)r$   r   rE   Zpost_url_continue)r'   r(   r)   rr      s    
zUserAdmin.response_add)r3   r4   )r5   r6   r7   )r8   r9   r:   r;   r<   )r=   r>   )r?   )r3   r@   rA   )r3   r7   r5   r6   r9   )r9   r:   r8   r;   )r3   r5   r6   r7   )r3   )r;   r<   )N)N)rR   N)rR   )N)r*   r+   r,   Zadd_form_templaterl   rb   ro   rC   r
   rF   r   rG   r	   rd   Zlist_displayZlist_filterr-   r.   r/   rD   rI   rM   rO   sensitive_post_parameters_mcsrf_protect_mr   ZatomicrX   rL   rr   r0   r(   r(   )r'   r)   r1   +   s:   

	>r1   N)3Zdjango.confr   Zdjango.conf.urlsr   Zdjango.contribr   r   Zdjango.contrib.admin.optionsr   Zdjango.contrib.admin.utilsr   Zdjango.contrib.authr   Zdjango.contrib.auth.formsr	   r
   r   Zdjango.contrib.auth.modelsr   r   Zdjango.core.exceptionsr   Z	django.dbr   Zdjango.httpr   r   Zdjango.template.responser   Zdjango.urlsr   Zdjango.utils.decoratorsr   Zdjango.utils.encodingr   Zdjango.utils.htmlr   Zdjango.utils.translationr   r   rb   Zdjango.views.decorators.csrfr   Zdjango.views.decorators.debugr   rt   rs   registerZ
ModelAdminr   r1   r(   r(   r(   r)   <module>   s0   

