o
    h7                     @   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l5m6Z6m7Z7 d dl8m9Z9 d dl:m;Z; d dl<m=Z= dd Z>dd Z?dd  Z@d!d" ZAd#d$ ZBG d%d& d&ZCeCd'e d(d)d*ZDeCd+e d,d-d*ZEG d.d/ d/ZFG d0d1 d1eFZGG d2d3 d3eFZHG d4d5 d5eFZIG d6d7 d7eFZJG d8d9 d9eFZKG d:d; d;eFZLee# d<d=G d>d? d?e7e%ZMG d@dA dAZNG dBdC dCeNejOZOG dDdE dEeNejPZPG dFdG dGeNejQZQG dHdI dIeNejRZRG dJdK dKejSZSG dLdM dMejTZTdNS )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)EditViewWagtailAdminTemplateMixin)log)UserProfile)get_custom_formc                  C      d} t t| rt| S tS )NWAGTAILADMIN_USER_LOGIN_FORM)hasattrr   r%   r   form_setting r+   [/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/admin/views/account.pyget_user_login_form(      
r-   c                  C   r&   )N%WAGTAILADMIN_USER_PASSWORD_RESET_FORM)r(   r   r%   r   r)   r+   r+   r,   get_password_reset_form0   r.   r0   c                   C      t tddS )N#WAGTAIL_PASSWORD_MANAGEMENT_ENABLEDTgetattrr   r+   r+   r+   r,   password_management_enabled=      r5   c                   C   r1   )N WAGTAIL_EMAIL_MANAGEMENT_ENABLEDTr3   r+   r+   r+   r,   email_management_enabledA   r6   r8   c                   C   s   t tdt S )NWAGTAIL_PASSWORD_RESET_ENABLED)r4   r   r5   r+   r+   r+   r,   password_reset_enabledE   s   r:   c                   @   s   e Zd ZdddZdS )SettingsTabr   c                 C      || _ || _|| _d S N)nametitleorder)selfr>   r?   r@   r+   r+   r,   __init__O      
zSettingsTab.__init__N)r   )__name__
__module____qualname__rB   r+   r+   r+   r,   r;   N   s    r;   profileProfiled   r@   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   r<   r=   )requestrP   rG   )rA   rQ   rP   rG   r+   r+   r,   rB   g   rC   zBaseSettingsPanel.__init__c                 C   s   dS )z4
        Returns True to display the panel.
        Tr+   rA   r+   r+   r,   	is_activel   s   zBaseSettingsPanel.is_activec                 C   sV   | j dkr| jn| j| jd}| jjdkr#| j| jj| jjfi |S | jdi |S )z.
        Returns an initialised form.
        rG   )instanceprefixPOSTNr+   )	form_objectrG   rP   r>   rQ   method
form_classrV   FILES)rA   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r\   rR   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()
        )rQ   )r   template_namer_   rQ   rR   r+   r+   r,   render   s   zBaseSettingsPanel.render)rD   rE   rF   r>   r?   profile_tabtab	help_textr`   rY   rW   rB   rS   r\   r_   ra   r+   r+   r+   r,   rN   ^   s    rN   c                   @   s$   e Zd ZdZdZeZedd ZdS )NameEmailSettingsPanel
name_emailrI   c                 C   s   t  rtdS tdS )NzName and EmailName)r8   _rR   r+   r+   r,   r?      s   zNameEmailSettingsPanel.titleN)	rD   rE   rF   r>   r@   r   rY   r   r?   r+   r+   r+   r,   re      s    re   c                   @   s(   e Zd ZdZedZdZdZeZ	dZ
dS )AvatarSettingsPanelavatarzProfile picturei,  z0wagtailadmin/account/settings_panels/avatar.htmlrG   N)rD   rE   rF   r>   r   r?   r@   r`   r   rY   rW   r+   r+   r+   r,   ri      s    ri   c                   @   s0   e Zd ZdZedZeZdZe	Z
dZdd ZdS )NotificationsSettingsPanelrK   rL   rI   rG   c                 C   s   t |  jS r=   )boolr\   fieldsrR   r+   r+   r,   rS      s   z$NotificationsSettingsPanel.is_activeN)rD   rE   rF   r>   r   r?   notifications_tabrc   r@   r   rY   rW   rS   r+   r+   r+   r,   rk      s    rk   c                   @   s,   e Zd ZdZedZdZeZdZ	dd Z
dS )LocaleSettingsPanellocaleLocalei  rG   c                 C   s   t t dkpt t dkS )N   )lenr   r    rR   r+   r+   r,   rS      s   zLocaleSettingsPanel.is_activeN)rD   rE   rF   r>   r   r?   r@   r   rY   rW   rS   r+   r+   r+   r,   ro      s    ro   c                   @   s$   e Zd ZdZedZdZeZdZ	dS )ThemeSettingsPanelthemezTheme preferencesi  rG   N)
rD   rE   rF   r>   r   r?   r@   r   rY   rW   r+   r+   r+   r,   rt      s    rt   c                   @   s0   e Zd ZdZedZdZeZdd Z	dd Z
dS )	ChangePasswordPanelpasswordPasswordi  c                 C   s   t  o| j S r=   )r5   rP   has_usable_passwordrR   r+   r+   r,   rS         zChangePasswordPanel.is_activec                 C   sj   d}| j jdkrt| j j| jd | j j| jd g}|r,| j| j| j j| jdS | j| j| jdS )NFrV   z-new_password1z-new_password2)rU   )rQ   rX   anyrV   getr>   rY   rP   )rA   	bind_formr+   r+   r,   r\      s   zChangePasswordPanel.get_formN)rD   rE   rF   r>   r   r?   r@   r   rY   rS   r\   r+   r+   r+   r,   rv      s    rv   post)r>   c                       s`   e Zd ZdZedZdZ fd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.htmlAccountrP   c                    s   t   d|  dg S )NrO   )urllabel)superget_breadcrumbs_itemsget_page_titlerR   	__class__r+   r,   r      s   z!AccountView.get_breadcrumbs_itemsc                    sn   t  jd	i |}|  }| ||d< |  |d< | ||d< d|d< | jj|d< tj	|d< tj
|d< |S )
Npanels_by_tab
menu_itemsmediaTform_is_multipartrP   submit_button_labelsubmit_button_active_labelr+   )r   r_   
get_panelsget_panels_by_tabget_menu_items	get_mediarQ   rP   r!   r   r   )rA   r[   contextpanelsr   r+   r,   r_      s   

zAccountView.get_context_datac              	   C   s   | j }| j j}t|}t|||t|||t|||t|||t|||t	|||g}t
dD ]}||||}|rD| rD|| q1dd |D }|S )Nregister_account_settings_panelc                 S   s   g | ]}|  r|qS r+   )rS   .0panelr+   r+   r,   
<listcomp>  s    z*AccountView.get_panels.<locals>.<listcomp>)rQ   rP   r$   get_for_userre   ri   rk   ro   rt   rv   r   	get_hooksrS   append)rA   rQ   rP   rG   r   fnr   r+   r+   r,   r      s"   







zAccountView.get_panelsc                 C   st   t dd |D }|jdd d tdd |D }|D ]
}||j | q| D ]\}}|jdd d q+|S )	Nc                 S   s   h | ]}|j qS r+   rc   r   r+   r+   r,   	<setcomp>  s    z0AccountView.get_panels_by_tab.<locals>.<setcomp>c                 S      | j S r=   rJ   r   r+   r+   r,   <lambda>      z/AccountView.get_panels_by_tab.<locals>.<lambda>)keyc                 S   s   g | ]}|g fqS r+   r+   )r   rc   r+   r+   r,   r         z1AccountView.get_panels_by_tab.<locals>.<listcomp>c                 S   r   r=   rJ   )r   r+   r+   r,   r     r   )listsortr   rc   r   items)rA   r   tabsr   r   rc   
tab_panelsr+   r+   r,   r     s   zAccountView.get_panels_by_tabc                 C   s0   g }t dD ]}|| j}|r|| q|S )Nregister_account_menu_item)r   r   rQ   r   )rA   r   r   itemr+   r+   r,   r      s   

zAccountView.get_menu_itemsc                 C   s,   dd |D }t  }|D ]}||j7 }q|S )Nc                 S      g | ]}|  qS r+   r^   r   r+   r+   r,   r   *  r   z)AccountView.get_media.<locals>.<listcomp>)r	   r   )rA   r   panel_formsr   r]   r+   r+   r,   r   )  s
   zAccountView.get_mediac                 C   s   dd |   D }| jj}t|}tdd |D rjt  |D ]	}|jr+|	  q"W d    n1 s6w   Y  t
|d t|| t|  t|td W d    tdS 1 saw   Y  tdS t|| j|  S )Nc                 S   r   r+   r^   r   r+   r+   r,   r   2  r   z$AccountView.post.<locals>.<listcomp>c                 s   s     | ]}|  p|j V  qd S r=   )is_validis_bound)r   r]   r+   r+   r,   	<genexpr>6  s    z#AccountView.post.<locals>.<genexpr>zwagtail.editz5Your account settings have been changed successfully!wagtailadmin_account)r   rQ   rP   r$   r   allr   atomicr   saver#   r   r   get_preferred_languager   successrh   r   r   r`   r_   )rA   rQ   r   rP   rG   r]   r+   r+   r,   r~   1  s,   




zAccountView.post)rD   rE   rF   r`   r   
page_titleheader_iconr   r_   r   r   r   r   r~   __classcell__r+   r+   r   r,   r      s    	r   c                           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|i |S r=   )r:   r
   r   dispatchrA   argsr[   r   r+   r,   r   U  s   z&PasswordResetEnabledViewMixin.dispatch)rD   rE   rF   __doc__r   r   r+   r+   r   r,   r   N  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.txt wagtailadmin_password_reset_donec                 C      t  S r=   )r0   rR   r+   r+   r,   get_form_classb     z PasswordResetView.get_form_classN)	rD   rE   rF   r`   email_template_namesubject_template_namer   success_urlr   r+   r+   r+   r,   r   \  s    r   c                   @      e Zd ZdZdS )PasswordResetDoneViewz-wagtailadmin/account/password_reset/done.htmlNrD   rE   rF   r`   r+   r+   r+   r,   r   f      r   c                   @   s   e Zd ZdZedZdS )PasswordResetConfirmViewz0wagtailadmin/account/password_reset/confirm.html$wagtailadmin_password_reset_completeN)rD   rE   rF   r`   r   r   r+   r+   r+   r,   r   l  s    r   c                   @   r   )PasswordResetCompleteViewz1wagtailadmin/account/password_reset/complete.htmlNr   r+   r+   r+   r,   r   s  r   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 )Nwagtailadmin_home)get_redirect_urlr   rR   r+   r+   r,   get_success_url|  rz   zLoginView.get_success_urlc                    s6   | j jjr| j jdrt|  S t j|i |S )Nzwagtailadmin.access_admin)rQ   rP   is_authenticatedhas_permr   r   r   r|   r   r   r+   r,   r|     s
   zLoginView.getc                 C   r   r=   )r-   rR   r+   r+   r,   r     r   zLoginView.get_form_classc                    sB   t  |}|jd}|r| jjtj |S | jjd |S )Nrememberr   )	r   
form_validcleaned_datar|   rQ   session
set_expiryr   SESSION_COOKIE_AGE)rA   r]   responser   r   r+   r,   r     s   zLoginView.form_validc                    sF   t  jdi |}t |d< ddlm} | }|j|jj|d< |S )Nshow_password_resetr   )get_user_modelusername_fieldr+   )	r   r_   r:   django.contrib.authr   _meta	get_fieldUSERNAME_FIELDverbose_name)rA   r[   r   r   Userr   r+   r,   r_     s   
zLoginView.get_context_data)
rD   rE   rF   r`   r   r|   r   r   r_   r   r+   r+   r   r,   r   y  s    	r   c                       r   )
LogoutViewwagtailadmin_loginc                    sP   t  j|g|R i |}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)r   r   r   r   rQ   rh   delete_cookier   SESSION_COOKIE_NAMESESSION_COOKIE_DOMAINSESSION_COOKIE_PATHr   modified)rA   rQ   r   r[   r   r   r+   r,   r     s   
zLogoutView.dispatch)rD   rE   rF   	next_pager   r   r+   r+   r   r,   r     s    r   N)Ucollectionsr   	functoolsr   django.confr   django.contribr   r   r   r   
auth_views	django.dbr   django.formsr	   django.httpr
   django.shortcutsr   django.template.loaderr   django.template.responser   django.urlsr   r   django.utils.decoratorsr   django.utils.translationr   rh   r   r   django.views.decorators.debugr   django.views.generic.baser   wagtailr   wagtail.admin.forms.accountr   r   r   r   r   wagtail.admin.forms.authr   r   r   wagtail.admin.localizationr   r    wagtail.admin.views.genericr!   r"   wagtail.log_actionsr#   wagtail.users.modelsr$   wagtail.utils.loadingr%   r-   r0   r5   r8   r:   r;   rb   rn   rN   re   ri   rk   ro   rt   rv   r   r   r   r   r   r   r   r   r+   r+   r+   r,   <module>   st    	
1	h



,