U
    {h5                     @   s  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 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 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+m,Z,m-Z- d dl.m/Z/m0Z0m1Z1 d dl2m3Z3m4Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z< dd Z=dd Z>dd  Z?d!d" Z@d#d$ ZAG d%d& d&ZBeBd'e d(d)d*ZCeBd+e d,d-d*ZDG d.d/ d/ZEG d0d1 d1eEZFG d2d3 d3eEZGG d4d5 d5eEZHG d6d7 d7eEZIG d8d9 d9eEZJG d:d; d;eEZKee# d<d=G d>d? d?e6e%ZLG d@dA dAZMG dBdC dCeMejNZNG dDdE dEeMejOZOG dFdG dGeMejPZPG dHdI dIeMejQZQG dJdK dKejRZRG dLdM dMejSZSdNS )O    )OrderedDict)cached_property)settings)messages)update_session_auth_hash)views)transaction)Media)Http404)redirect)render_to_string)TemplateResponse)reversereverse_lazy)method_decorator)gettext)gettext_lazyoverride)sensitive_post_parameters)TemplateView)hooks)AvatarPreferencesFormLocalePreferencesFormNameEmailFormNotificationPreferencesFormThemePreferencesForm)	LoginFormPasswordChangeFormPasswordResetForm)get_available_admin_languagesget_available_admin_time_zones)WagtailAdminTemplateMixin)log)UserProfile)get_custom_formc                  C   s   d} t t| rt| S tS d S )NZWAGTAILADMIN_USER_LOGIN_FORM)hasattrr   r$   r   Zform_setting r'   c/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/admin/views/account.pyget_user_login_form(   s    
r)   c                  C   s   d} t t| rt| S tS d S )NZ%WAGTAILADMIN_USER_PASSWORD_RESET_FORM)r%   r   r$   r   r&   r'   r'   r(   get_password_reset_form0   s    
r*   c                   C   s   t tddS )NZ#WAGTAIL_PASSWORD_MANAGEMENT_ENABLEDTgetattrr   r'   r'   r'   r(   password_management_enabled=   s    r-   c                   C   s   t tddS )NZ WAGTAIL_EMAIL_MANAGEMENT_ENABLEDTr+   r'   r'   r'   r(   email_management_enabledA   s    r.   c                   C   s   t tdt S )NZWAGTAIL_PASSWORD_RESET_ENABLED)r,   r   r-   r'   r'   r'   r(   password_reset_enabledE   s
      r/   c                   @   s   e Zd ZdddZdS )SettingsTabr   c                 C   s   || _ || _|| _d S N)nametitleorder)selfr2   r3   r4   r'   r'   r(   __init__O   s    zSettingsTab.__init__N)r   )__name__
__module____qualname__r6   r'   r'   r'   r(   r0   N   s   r0   profileZProfiled   r4   notificationsNotifications   c                   @   sP   e Zd ZdZdZeZdZdZdZ	dZ
dd Zdd Zd	d
 Zdd Zdd ZdS )BaseSettingsPanel Nz.wagtailadmin/account/settings_panels/base.htmluserc                 C   s   || _ || _|| _d S r1   )requestrB   r:   )r5   rC   rB   r:   r'   r'   r(   r6   g   s    zBaseSettingsPanel.__init__c                 C   s   dS )z4
        Returns True to display the panel.
        Tr'   r5   r'   r'   r(   	is_activel   s    zBaseSettingsPanel.is_activec                 C   sR   | j dkr| jn| j| jd}| jjdkrB| j| jj| jjf|S | jf |S dS )z.
        Returns an initialised form.
        r:   )instanceprefixPOSTN)	form_objectr:   rB   r2   rC   method
form_classrH   ZFILES)r5   kwargsr'   r'   r(   get_formr   s    zBaseSettingsPanel.get_formc                 C   s   d|   iS )zR
        Returns the template context to use when rendering the template.
        formrM   rD   r'   r'   r(   get_context_data   s    z"BaseSettingsPanel.get_context_datac                 C   s   t | j|  | jdS )zw
        Renders the panel using the template specified in .template_name and context from .get_context_data()
        )rC   )r   template_namerP   rC   rD   r'   r'   r(   render   s
      zBaseSettingsPanel.render)r7   r8   r9   r2   r3   profile_tabtab	help_textrQ   rK   rI   r6   rE   rM   rP   rR   r'   r'   r'   r(   r@   ^   s   r@   c                   @   s$   e Zd ZdZdZeZedd ZdS )NameEmailSettingsPanelZ
name_emailr;   c                 C   s   t  rtdS tdS )NzName and EmailName)r.   _rD   r'   r'   r(   r3      s    zNameEmailSettingsPanel.titleN)	r7   r8   r9   r2   r4   r   rK   r   r3   r'   r'   r'   r(   rV      s
   rV   c                   @   s(   e Zd ZdZedZdZdZeZ	dZ
dS )AvatarSettingsPanelZavatarzProfile picturei,  z0wagtailadmin/account/settings_panels/avatar.htmlr:   N)r7   r8   r9   r2   r   r3   r4   rQ   r   rK   rI   r'   r'   r'   r(   rY      s   rY   c                   @   s0   e Zd ZdZedZeZdZe	Z
dZdd ZdS )NotificationsSettingsPanelr=   r>   r;   r:   c                 C   s   t |  jS r1   )boolrM   fieldsrD   r'   r'   r(   rE      s    z$NotificationsSettingsPanel.is_activeN)r7   r8   r9   r2   r   r3   notifications_tabrT   r4   r   rK   rI   rE   r'   r'   r'   r(   rZ      s   rZ   c                   @   s,   e Zd ZdZedZdZeZdZ	dd Z
dS )LocaleSettingsPanellocaleZLocalei  r:   c                 C   s   t t dkpt t dkS )N   )lenr   r    rD   r'   r'   r(   rE      s    zLocaleSettingsPanel.is_activeN)r7   r8   r9   r2   r   r3   r4   r   rK   rI   rE   r'   r'   r'   r(   r^      s   r^   c                   @   s$   e Zd ZdZedZdZeZdZ	dS )ThemeSettingsPanelthemezTheme preferencesi  r:   N)
r7   r8   r9   r2   r   r3   r4   r   rK   rI   r'   r'   r'   r(   rb      s
   rb   c                   @   s0   e Zd ZdZedZdZeZdd Z	dd Z
dS )	ChangePasswordPanelpasswordZPasswordi  c                 C   s   t  o| j S r1   )r-   rB   Zhas_usable_passwordrD   r'   r'   r(   rE      s    zChangePasswordPanel.is_activec                 C   sn   d}| j jdkr<t| j j| jd | j j| jd g}|rX| j| j| j j| jdS | j| j| jdS d S )NFrH   z-new_password1z-new_password2)rG   )rC   rJ   anyrH   getr2   rK   rB   )r5   Z	bind_formr'   r'   r(   rM      s    zChangePasswordPanel.get_formN)r7   r8   r9   r2   r   r3   r4   r   rK   rE   rM   r'   r'   r'   r(   rd      s   rd   post)r2   c                       sT   e Zd ZdZedZdZ fddZdd Zdd	 Z	d
d Z
dd Zdd Z  ZS )AccountViewz!wagtailadmin/account/account.htmlZAccountrB   c                    sN   t  jf |}|  }| ||d< |  |d< | ||d< | jj|d< |S )Npanels_by_tab
menu_itemsmediarB   )superrP   
get_panelsget_panels_by_tabget_menu_items	get_mediarC   rB   )r5   rL   contextpanels	__class__r'   r(   rP      s    zAccountView.get_context_datac              	   C   s   | j }| j j}t|}t|||t|||t|||t|||t|||t	|||g}t
dD ]&}||||}|rb| rb|| qbdd |D }|S )NZregister_account_settings_panelc                 S   s   g | ]}|  r|qS r'   )rE   .0panelr'   r'   r(   
<listcomp>  s      z*AccountView.get_panels.<locals>.<listcomp>)rC   rB   r#   get_for_userrV   rY   rZ   r^   rb   rd   r   	get_hooksrE   append)r5   rC   rB   r:   rs   fnrx   r'   r'   r(   rn      s     






zAccountView.get_panelsc                 C   st   t dd |D }|jdd d tdd |D }|D ]}||j | q8| D ]\}}|jdd d qV|S )	Nc                 S   s   h | ]
}|j qS r'   rT   rv   r'   r'   r(   	<setcomp>  s     z0AccountView.get_panels_by_tab.<locals>.<setcomp>c                 S   s   | j S r1   r<   r~   r'   r'   r(   <lambda>      z/AccountView.get_panels_by_tab.<locals>.<lambda>)keyc                 S   s   g | ]}|g fqS r'   r'   )rw   rT   r'   r'   r(   ry     s     z1AccountView.get_panels_by_tab.<locals>.<listcomp>c                 S   s   | j S r1   r<   )rx   r'   r'   r(   r     r   )listsortr   rT   r|   items)r5   rs   tabsrj   rx   rT   Z
tab_panelsr'   r'   r(   ro   	  s    zAccountView.get_panels_by_tabc                 C   s0   g }t dD ]}|| j}|r|| q|S )NZregister_account_menu_item)r   r{   rC   r|   )r5   rk   r}   itemr'   r'   r(   rp     s    
zAccountView.get_menu_itemsc                 C   s,   dd |D }t  }|D ]}||j7 }q|S )Nc                 S   s   g | ]}|  qS r'   rO   rv   r'   r'   r(   ry      s     z)AccountView.get_media.<locals>.<listcomp>)r	   rl   )r5   rs   panel_formsrl   rN   r'   r'   r(   rq     s
    zAccountView.get_mediac              	   C   s   dd |   D }| jj}t|}tdd |D rt  |D ]}|jrD|	  qDW 5 Q R X t
|d t|| t|  t|td W 5 Q R X tdS t|| j|  S )Nc                 S   s   g | ]}|  qS r'   rO   rv   r'   r'   r(   ry   (  s     z$AccountView.post.<locals>.<listcomp>c                 s   s   | ]}|  p|j V  qd S r1   )Zis_validis_bound)rw   rN   r'   r'   r(   	<genexpr>,  s     z#AccountView.post.<locals>.<genexpr>zwagtail.editz5Your account settings have been changed successfully!Zwagtailadmin_account)rn   rC   rB   r#   rz   allr   Zatomicr   saver"   r   r   Zget_preferred_languager   successrX   r   r   rQ   rP   )r5   rC   r   rB   r:   rN   r'   r'   r(   rh   '  s"    



 zAccountView.post)r7   r8   r9   rQ   r   Z
page_titleZheader_iconrP   rn   ro   rp   rq   rh   __classcell__r'   r'   rt   r(   ri      s   		ri   c                       s    e Zd ZdZ fddZ  ZS )PasswordResetEnabledViewMixinz
    Class based view mixin that disables the view if password reset is disabled by one of the following settings:
    - WAGTAIL_PASSWORD_RESET_ENABLED
    - WAGTAIL_PASSWORD_MANAGEMENT_ENABLED
    c                    s   t  s
tt j||S r1   )r/   r
   rm   dispatchr5   argsrL   rt   r'   r(   r   K  s    z&PasswordResetEnabledViewMixin.dispatch)r7   r8   r9   __doc__r   r   r'   r'   rt   r(   r   D  s   r   c                   @   s(   e Zd ZdZdZdZedZdd ZdS )PasswordResetViewz-wagtailadmin/account/password_reset/form.htmlz-wagtailadmin/account/password_reset/email.txtz5wagtailadmin/account/password_reset/email_subject.txtZ wagtailadmin_password_reset_donec                 C   s   t  S r1   )r*   rD   r'   r'   r(   get_form_classX  s    z PasswordResetView.get_form_classN)	r7   r8   r9   rQ   Zemail_template_nameZsubject_template_namer   success_urlr   r'   r'   r'   r(   r   R  s
   r   c                   @   s   e Zd ZdZdS )PasswordResetDoneViewz-wagtailadmin/account/password_reset/done.htmlNr7   r8   r9   rQ   r'   r'   r'   r(   r   \  s   r   c                   @   s   e Zd ZdZedZdS )PasswordResetConfirmViewz0wagtailadmin/account/password_reset/confirm.htmlZ$wagtailadmin_password_reset_completeN)r7   r8   r9   rQ   r   r   r'   r'   r'   r(   r   b  s   r   c                   @   s   e Zd ZdZdS )PasswordResetCompleteViewz1wagtailadmin/account/password_reset/complete.htmlNr   r'   r'   r'   r(   r   i  s   r   c                       sH   e Zd ZdZdd Z fddZdd Z fdd	Z fd
dZ  Z	S )	LoginViewzwagtailadmin/login.htmlc                 C   s   |   ptdS )NZwagtailadmin_home)Zget_redirect_urlr   rD   r'   r'   r(   get_success_urlr  s    zLoginView.get_success_urlc                    s2   | j jjr$| j jdr$t|  S t j||S )Nzwagtailadmin.access_admin)rC   rB   is_authenticatedZhas_permr   r   rm   rg   r   rt   r'   r(   rg   u  s
    zLoginView.getc                 C   s   t  S r1   )r)   rD   r'   r'   r(   r   ~  s    zLoginView.get_form_classc                    s@   t  |}|jd}|r.| jjtj n| jjd |S )Nrememberr   )	rm   
form_validZcleaned_datarg   rC   sessionZ
set_expiryr   ZSESSION_COOKIE_AGE)r5   rN   responser   rt   r'   r(   r     s    zLoginView.form_validc                    sB   t  jf |}t |d< ddlm} | }|j|jj|d< |S )NZshow_password_resetr   )get_user_modelZusername_field)	rm   rP   r/   django.contrib.authr   _meta	get_fieldZUSERNAME_FIELDZverbose_name)r5   rL   rr   r   ZUserrt   r'   r(   rP     s    

zLoginView.get_context_data)
r7   r8   r9   rQ   r   rg   r   r   rP   r   r'   r'   rt   r(   r   o  s   	r   c                       s    e Zd ZdZ fddZ  ZS )
LogoutViewZwagtailadmin_loginc                    sJ   t  j|f||}t| jtd |jtjtj	tj
d d| jj_|S )Nz&You have been successfully logged out.)domainpathF)rm   r   r   r   rC   rX   Zdelete_cookier   ZSESSION_COOKIE_NAMEZSESSION_COOKIE_DOMAINZSESSION_COOKIE_PATHr   modified)r5   rC   r   rL   r   rt   r'   r(   r     s    
zLogoutView.dispatch)r7   r8   r9   Z	next_pager   r   r'   r'   rt   r(   r     s   r   N)Tcollectionsr   	functoolsr   Zdjango.confr   Zdjango.contribr   r   r   r   Z
auth_viewsZ	django.dbr   Zdjango.formsr	   Zdjango.httpr
   Zdjango.shortcutsr   Zdjango.template.loaderr   Zdjango.template.responser   Zdjango.urlsr   r   Zdjango.utils.decoratorsr   Zdjango.utils.translationr   rX   r   r   Zdjango.views.decorators.debugr   Zdjango.views.generic.baser   Zwagtailr   Zwagtail.admin.forms.accountr   r   r   r   r   Zwagtail.admin.forms.authr   r   r   Zwagtail.admin.localizationr   r    Zwagtail.admin.views.genericr!   Zwagtail.log_actionsr"   Zwagtail.users.modelsr#   Zwagtail.utils.loadingr$   r)   r*   r-   r.   r/   r0   rS   r]   r@   rV   rY   rZ   r^   rb   rd   ri   r   r   r   r   r   r   r   r'   r'   r'   r(   <module>   s|   	  1	^

 
 
 ,