
^Q\#                 @   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 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 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 j0 e  Gd d   d e j1   Z2 e j0 e  Gd d   d e j1   Z3 d S)    )settings)url)adminmessages)IS_POPUP_VAR)unquote)update_session_auth_hash)AdminPasswordChangeFormUserChangeFormUserCreationForm)GroupUser)PermissionDenied)routertransaction)Http404HttpResponseRedirect)TemplateResponse)reverse)method_decorator)
force_text)escape)ugettextugettext_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                s_   | j  d k r@ | j d | j j j  } | j d  | d <n  t t |   j | d | | 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__ ?/var/www/dbchiro/venv/build/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            	       so  e  Z d  Z d Z d Z d i d( d 6f e d  i d) d 6f e d
  i d* d 6f e d  i d+ d 6f f Z d i d, d 6d- d 6f 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usernamepasswordfieldszPersonal info
first_name	last_nameemailZPermissions	is_activeis_staffis_superusergroupsuser_permissionszImportant dates
last_logindate_joinedwideZclasses	password1	password2c                s&   | s |  j  St t |   j | |  S)N)add_fieldsetsr#   r2   get_fieldsets)r%   r    obj)r(   r)   r*   rD   E   s    zUserAdmin.get_fieldsetsc                sK   i  } | d k r" |  j  | d <n  | j |  t t |   j | | |  S)z7
        Use special form during user creation
        Nform)add_formupdater#   r2   get_form)r%   r    rE   r&   defaults)r(   r)   r*   rI   J   s
    zUserAdmin.get_formc                s8   t  d |  j j |  j  d d g t t |   j   S)Nz^(.+)/password/$r   Zauth_user_password_change)r   
admin_siteZ
admin_viewuser_change_passwordr#   r2   get_urls)r%   )r(   r)   r*   rM   T   s
    	zUserAdmin.get_urlsc                s,   | j  d  r d St t |   j | |  S)Nr4   F)
startswithr#   r2   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  QXd  S)NZusing)r   Zatomicr   Zdb_for_writer"   	_add_view)r%   r    form_urlextra_contextr)   r)   r*   add_viewc   s    zUserAdmin.add_viewc                s   |  j  |  s? |  j |  r6 t j r6 t d   n  t  n  | d  k rT i  } n  |  j j j |  j j	  } i f  d 6| j
 d 6} | 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#   r2   rV   )r%   r    rT   rU   Zusername_fieldrJ   )r(   r)   r*   rS   i   s    		zUserAdmin._add_viewc             C   sg  |  j  |  s t  n  |  j | t |   } | d  k rx t t d  i t |  j j j	  d 6t
 |  d 6  n  | j d k rD|  j | | j  } | j   rS| 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  i t | j  d 6f g } t  j! j" | | i   }	 i t d	  t
 | j#    d
 6|	 d 6| d 6| d 6t$ | j k pt$ | j% k d 6d d 6d d 6d d 6d d 6d d 6|  j j d 6| d 6d d 6d d 6}
 |
 j& |  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argsr5   zChange password: %stitle	adminFormrT   rF   Zis_popupTaddFZchangeZhas_delete_permissionrW   Zhas_absolute_urloptsZoriginalZsave_asZ	show_savez$admin/auth/user/change_password.html)+rW   r   Z
get_objectr   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   ZhelpersZ	AdminFormZget_usernamer   GETrH   Zeach_contextZcurrent_appr   change_user_password_template)r%   r    idrT   rh   rF   Zchange_messagemsg	fieldsetsr`   contextr)   r)   r*   rL      sb    	
		
	zUserAdmin.user_change_passwordc                s\   d | j  k r@ t | j  k r@ | j  j   | _  d | j  d <n  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   copyr#   r2   response_add)r%   r    rE   Zpost_url_continue)r(   r)   r*   rs      s
    zUserAdmin.response_add)usernamezpassword)r6   r7   email)r9   r:   r;   groupsr=   )r>   r?   )r@   )rt   rA   rB   )rt   ru   r6   r7   r:   )r:   r;   r9   rv   )rt   r6   r7   ru   )rt   )rv   r=   )r,   r-   r.   Zadd_form_templaterl   rc   ro   rC   r
   rF   r   rG   r	   re   Zlist_displayZlist_filterr/   r0   r1   rD   rI   rM   rO   sensitive_post_parameters_mcsrf_protect_mrV   rS   rL   rs   r)   r)   )r(   r*   r2   +   s:   

	>r2   N)4Z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   r   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   rc   Zdjango.views.decorators.csrfr   Zdjango.views.decorators.debugr   rx   rw   registerZ
ModelAdminr   r2   r)   r)   r)   r*   <module>   s0   