U
    {h2                     @   s  d dl mZ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 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" d dl#m$Z$ d dl%m&Z& d dl'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- d dl.m/Z/ e Z0G dd de$Z1G dd de$Z2G dd de$Z3G dd de$Z4G dd de$Z5G dd de$Z6G dd  d e&eZ7d!d" Z8e	d#d$d%d&d' Z9d(d) Z:d*S )+    )AnyMappingUnion)settings)get_user_model)permission_required)ExistsIntegerFieldMaxOuterRefQ)Cast)Media)Http404HttpResponse)gettext_lazy)TemplateView)hooks)	get_icons)get_site_for_user)SiteSummaryPanel)	Component)WagtailAdminTemplateMixin)PagePageLogEntryRevision	TaskStateWorkflowStateget_default_page_content_type)page_permission_policyc                       s~   e Zd ZdZdZdZeeef dddZ	edddZ
eeef eeef d	d
dZdeeef ed	 fddZ  ZS )UpgradeNotificationPanelZupgrade_notificationz+wagtailadmin/home/upgrade_notification.htmld   returnc                 C   s   t tddS )NZWAGTAIL_ENABLE_UPDATE_CHECKTgetattrr   self r(   `/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/admin/views/home.pyget_upgrade_check_setting(   s    z2UpgradeNotificationPanel.get_upgrade_check_settingc                 C   s&   |   }t|tr"| dkr"dS dS )NZltsTF)r*   
isinstancestrlower)r'   Zupgrade_checkr(   r(   r)   upgrade_check_lts_only+   s    z/UpgradeNotificationPanel.upgrade_check_lts_onlyparent_contextr#   c                 C   s   d|   iS )NZlts_only)r.   r'   r0   r(   r(   r)   get_context_data1   s    z)UpgradeNotificationPanel.get_context_dataNc                    s(   |d j jr |  r t |S dS d S )Nrequest )userZis_superuserr*   superrender_htmlr1   	__class__r(   r)   r7   4   s    
z$UpgradeNotificationPanel.render_html)N)__name__
__module____qualname__nametemplate_nameorderr   boolr,   r*   r.   r   r   r2   r7   __classcell__r(   r(   r8   r)   r    #   s    r    c                       s   e Zd ZdZdZdZdZeee	f dddZ
e	ddd	Zee	ef ee	ef d
ddZdee	ef ed
ddZdee	ef e	d
 fddZ  ZS )WhatsNewInWagtailVersionPanelZwhats_new_in_wagtail_versionz3wagtailadmin/home/whats_new_in_wagtail_version.htmln   4r"   c                 C   s   t tddS )NZWAGTAIL_ENABLE_WHATS_NEW_BANNERTr$   r&   r(   r(   r)   get_whats_new_banner_settingD   s    z:WhatsNewInWagtailVersionPanel.get_whats_new_banner_settingc                 C   s   | j  d| j S )N_)r=   _versionr&   r(   r(   r)   get_dismissible_idG   s    z0WhatsNewInWagtailVersionPanel.get_dismissible_idr/   c                 C   s   |   | jdS )N)Zdismissible_idversion)rH   rG   r1   r(   r(   r)   r2   J   s    z.WhatsNewInWagtailVersionPanel.get_context_dataNc                 C   s:   |   sdS t|d jdd }|r6|j|  r6dS dS )NFr3   Zwagtail_userprofileT)rE   r%   r5   ZdismissiblesgetrH   )r'   r0   Zprofiler(   r(   r)   is_shownM   s    z&WhatsNewInWagtailVersionPanel.is_shownc                    s   |  |sdS t |S )Nr4   )rK   r6   r7   r1   r8   r(   r)   r7   W   s    
z)WhatsNewInWagtailVersionPanel.render_html)N)N)r:   r;   r<   r=   r>   r?   rG   r   r@   r,   rE   rH   r   r   r2   rK   r7   rA   r(   r(   r8   r)   rB   >   s    
rB   c                       s(   e Zd ZdZdZdZ fddZ  ZS )$UserObjectsInWorkflowModerationPanelZ#user_objects_in_workflow_moderationz:wagtailadmin/home/user_objects_in_workflow_moderation.html   c                    s   |d }t  |}ttddrtt jdttj	j
|jttdt dd@ }tj	 
|t|jdB d	d
ddd|d< dd |d D |d< ntj	 |d< ||d< |S )Nr3   WAGTAIL_WORKFLOW_ENABLEDT)Zbase_content_type_idZ	object_id)Zoutput_field)ownerid)Zrequested_bycontent_objectZcontent_object__latest_revisionZcurrent_task_stateZcurrent_task_state__taskz-current_task_state__started_atZworkflow_statesc                 S   s   g | ]}|j r|qS r(   )rQ   ).0stater(   r(   r)   
<listcomp>   s     zIUserObjectsInWorkflowModerationPanel.get_context_data.<locals>.<listcomp>)r6   r2   r%   r   r   r   rP   r   r   objectsfilterr5   r   r   r	   r   Zactiveprefetch_relatedselect_relatedorder_bynone)r'   r0   r3   contextZpages_owned_by_userr8   r(   r)   r2   b   s>    


z5UserObjectsInWorkflowModerationPanel.get_context_datar:   r;   r<   r=   r>   r?   r2   rA   r(   r(   r8   r)   rL   ]   s   rL   c                       s(   e Zd ZdZdZdZ fddZ  ZS )WorkflowObjectsToModeratePanelZworkflow_objects_to_moderatez3wagtailadmin/home/workflow_objects_to_moderate.html   c                    s"  |d }t  |}g |d< ||d< |d |d< ttdds@|S tj|jdddd		d
d
djtj d}|D ]}|jj}|sqz|jj||j}|j }d}	d}
d}t|ts|j}|d}	|d}
|d}t|ddsd }
|d ||j|j|j||||	|
|d
 qz|S )Nr3   states
csrf_tokenrN   TrevisionZrevision__userworkflow_stateZworkflow_state__workflowZrevision__content_objectZ)revision__content_object__latest_revisionz-started_at)previous_revision_idz"wagtailadmin_pages:workflow_actionz#wagtailadmin_pages:workflow_previewz$wagtailadmin_pages:revisions_compareZworkflow_actionZworkflow_previewZrevisions_compareZis_previewableF)
objra   rc   live_revision_idZ
task_stateactionsworkflow_tasksworkflow_action_url_nameworkflow_preview_url_namerevisions_compare_url_name)r6   r2   r%   r   r   rU   Zreviewable_byr5   rX   rW   rY   annotater   Zprevious_revision_id_subqueryra   rQ   taskspecificZget_actionsrb   Zall_tasks_with_statusr+   r   Zsnippet_viewsetZget_url_nameappendrc   re   )r'   r0   r3   r[   r_   rS   rd   rf   rg   rh   ri   rj   Zviewsetr8   r(   r)   r2      sf    




z/WorkflowObjectsToModeratePanel.get_context_datar\   r(   r(   r8   r)   r]      s   r]   c                       s(   e Zd ZdZdZdZ fddZ  ZS )LockedPagesPanellocked_pagesz#wagtailadmin/home/locked_pages.htmli,  c                    sZ   |d }t  |}|tjjd|jddddjddt	
|jd||d	 d
 |S )Nr3   T)lockedZ	locked_byz
-locked_atz-latest_revision_created_atz-pk)Zdeferunlockr`   )rp   Zcan_remove_locksr3   r`   )r6   r2   updater   rU   rV   r5   rY   rm   r   Zuser_has_permission)r'   r0   r3   r[   r8   r(   r)   r2      s,       z!LockedPagesPanel.get_context_datar\   r(   r(   r8   r)   ro      s   ro   c                       s(   e Zd ZdZdZdZ fddZ  ZS )RecentEditsPanelZrecent_editsz#wagtailadmin/home/recent_edits.html   c           
         s   |d }t  |}ttdd}tjj|jdddj	t
ddd	d | }tj   d
d |D }g }|D ](}||d }	|	r|||d |	f q|||d< ||d< |S )Nr3   ZWAGTAILADMIN_RECENT_EDITS_LIMIT   zwagtail.edit)r5   actionpage_id	timestamp)latest_datez-latest_datec                 S   s   g | ]}|d  qS )rx   r(   )rR   logr(   r(   r)   rT     s     z5RecentEditsPanel.get_context_data.<locals>.<listcomp>rz   
last_edits)r6   r2   r%   r   r   rU   rV   r5   valuesrk   r
   rY   r   rm   Zprefetch_workflow_statesZannotate_approved_scheduleZin_bulkrJ   rn   )
r'   r0   r3   r[   Z
edit_countZlast_edits_datesZpages_mappingr|   r{   pager8   r(   r)   r2      s2    z!RecentEditsPanel.get_context_datar\   r(   r(   r8   r)   rt      s   rt   c                       sD   e Zd ZdZedZ fddZg fddZdd Zd	d
 Z	  Z
S )HomeViewzwagtailadmin/home.htmlZ	Dashboardc                    sT   t  jf |}|  }|  }| ||d< t|dd d|d< | jj|d< ||S )Nmediac                 S   s   | j S N)r?   )pr(   r(   r)   <lambda>%      z+HomeView.get_context_data.<locals>.<lambda>)keypanelsr5   )r6   r2   
get_panelsget_site_details	get_mediasortedr3   r5   )r'   kwargsr[   r   Zsite_detailsr8   r(   r)   r2     s    zHomeView.get_context_datac                 C   s   t  }|D ]}||j7 }q
|S r   )r   r   )r'   r   r   panelr(   r(   r)   r   *  s    zHomeView.get_mediac                 C   sB   | j }t|t t t t t g}tdD ]}||| q.|S )NZconstruct_homepage_panels)	r3   r   r    r]   rL   rt   ro   r   Z	get_hooks)r'   r3   r   fnr(   r(   r)   r   2  s    zHomeView.get_panelsc                 C   s(   | j }t|j}|d |d |d dS )N	root_page	root_site	site_name)r   r   r   )r3   r   r5   )r'   r3   siter(   r(   r)   r   D  s    
zHomeView.get_site_details)r:   r;   r<   r>   r   Z
page_titler2   r   r   r   rA   r(   r(   r8   r)   r     s   r   c                 C   s   t dd S )Nz1This is a test of the emergency broadcast system.)	Exceptionr3   r(   r(   r)   
error_testO  s    r   zwagtailadmin.access_adminZwagtailadmin_login)Z	login_urlc                 C   s   t dS )z
    Called whenever a request comes in with the correct prefix (eg /admin/) but
    doesn't actually correspond to a Wagtail view.

    For authenticated users, it'll raise a 404 error. Anonymous users will be
    redirected to the login page.
    N)r   r   r(   r(   r)   defaultS  s    	r   c                 C   s   t t ddS )Nzimage/svg+xml; charset=utf-8)content_type)r   r   r   r(   r(   r)   sprite_  s    r   N);typingr   r   r   Zdjango.confr   Zdjango.contrib.authr   Zdjango.contrib.auth.decoratorsr   Zdjango.db.modelsr   r	   r
   r   r   Zdjango.db.models.functionsr   Zdjango.formsr   Zdjango.httpr   r   Zdjango.utils.translationr   Zdjango.views.generic.baser   Zwagtailr   Zwagtail.admin.iconsr   Zwagtail.admin.navigationr   Zwagtail.admin.site_summaryr   Zwagtail.admin.ui.componentsr   Zwagtail.admin.views.genericr   Zwagtail.modelsr   r   r   r   r   r   Zwagtail.permissionsr   ZUserr    rB   rL   r]   ro   rt   r   r   r   r   r(   r(   r(   r)   <module>   s:    2L&4

