
v^!                 @   s  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$ m% Z& d  d l' m( Z( d  d l) m* Z* e  e(  Z+ e  e*    Z, e j- e  Gd d   d e j.   Z/ e j- e  Gd d   d e j.   Z0 d 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                   s7   e  Z d  Z d Z d Z d Z d   f d d  Z   S)	
GroupAdminnamepermissionsNc                sV   | j  d k r= | j d | j j j  } | j d  | d <t   j | d | | S)Nr   Zquerysetcontent_typerequest)r   getZremote_fieldmodelZobjectsZselect_relatedsuperformfield_for_manytomany)selfZdb_fieldr   kwargsqs)	__class__ ;/tmp/pip-build-8lau8j11/django/django/contrib/auth/admin.pyr#      s    z#GroupAdmin.formfield_for_manytomany)name)r*   )zpermissions)__name__
__module____qualname__search_fieldsorderingfilter_horizontalr#   r(   r(   )r'   r)   r      s   r   c            	       si  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 d- i f f Z e Z	 e
 Z e Z d. Z d/ Z d0 Z d1 Z d2 Z d   f d d  Z d   f d d  Z   f d d   Z   f d d   Z e e d d d  d!    Z d d   f d" d#  Z e d d$ d%   Z d   f d& d'  Z   S)3	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classeswide	password1	password2c                s    | s |  j  St   j | |  S)N)add_fieldsetsr"   get_fieldsets)r$   r   obj)r'   r(   r)   rD   C   s    zUserAdmin.get_fieldsetsc                sB   i  } | d k r |  j  | d <| j |  t   j | | |  S)z7
        Use special form during user creation
        Nform)add_formupdater"   get_form)r$   r   rE   r%   defaults)r'   r(   r)   rI   H   s
    zUserAdmin.get_formc                s2   t  d |  j j |  j  d d g t   j   S)Nz<id>/password/r   Zauth_user_password_change)r   
admin_siteZ
admin_viewuser_change_passwordr"   get_urls)r$   )r'   r(   r)   rM   R   s
    	zUserAdmin.get_urlsc                s#   | j  d  o" t   j | |  S)Nr4   )
startswithr"   lookup_allowed)r$   lookupvalue)r'   r(   r)   rO   [   s    zUserAdmin.lookup_allowed c             C   s=   t  j d t j |  j    |  j | | |  SWd  QRXd  S)NZusing)r   Zatomicr   Zdb_for_writer!   	_add_view)r$   r   form_urlextra_contextr(   r(   r)   add_view_   s    zUserAdmin.add_viewc                s   |  j  |  s9 |  j |  r3 t j r3 t d   t  | d  k rK i  } |  j j j |  j j	  } d f  d | j
 i } | j |  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"   rV   )r$   r   rT   rU   Zusername_fieldrJ   )r'   r(   r)   rS   e   s    	zUserAdmin._add_viewc             C   sF  |  j  | t |   } |  j | |  s0 t  | d  k rm t t d  d |  j j j d t	 |  i   | j
 d k r9|  j | | j  } | j   rH| j   |  j | | d   } |  j | | |  t d  } t j | |  t | | j  t t d |  j j | j j | j j f d | j f  Sn |  j |  } d  d t | j  i f g } t j  j! | | i   }	 d	 t d
  t	 | j"    d |	 d | d | d t# | j k pt# | j$ k d d d d d d d d d d d |  j j d | d d d d i |  j j% |   }
 |  j j | _& t' | |  j( p?d |
  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   titlezChange password: %s	adminFormrT   rF   Zis_popupaddTZchangeFZhas_delete_permissionrW   Zhas_absolute_urloptsZoriginalZsave_asZ	show_savez$admin/auth/user/change_password.html))Z
get_objectr   rW   r   r   _r!   rY   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   GETZeach_contextZcurrent_appr   change_user_password_template)r$   r   idrT   rh   rF   Zchange_messagemsg	fieldsetsr`   contextr(   r(   r)   rL      s`    
				zUserAdmin.user_change_passwordc                sS   d | j  k r= t | j  k r= | j  j   | _  d | j  d <t   j | | |  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.
        Z_addanother   Z	_continue)r]   r   copyr"   response_add)r$   r   rE   Zpost_url_continue)r'   r(   r)   rt      s    zUserAdmin.response_add)usernamezpassword)r5   r6   email)r8   r9   r:   groupsr<   )r=   r>   )r@   )ru   rA   rB   )ru   rv   r5   r6   r9   )r9   r:   r8   rw   )ru   r5   r6   rv   )ru   )rw   r<   )r+   r,   r-   Zadd_form_templaterm   rc   rp   rC   r	   rF   r
   rG   r   re   Zlist_displayZlist_filterr.   r/   r0   rD   rI   rM   rO   sensitive_post_parameters_mcsrf_protect_mrV   rS   rL   rt   r(   r(   )r'   r)   r1   (   s:   	
	>r1   N)1Zdjango.confr   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   r   Zdjango.httpr   r   Zdjango.template.responser   Zdjango.urlsr   r   Zdjango.utils.decoratorsr   Zdjango.utils.htmlr   Zdjango.utils.translationr   r   rc   Zdjango.views.decorators.csrfr   Zdjango.views.decorators.debugr   ry   rx   registerZ
ModelAdminr   r1   r(   r(   r(   r)   <module>   s,   