o
    h5                     @   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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* d dl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 d dl2m3Z3 e Z4G dd de(Z5G dd de(Z6G dd de(Z7G dd de(Z8G dd de(Z9G dd  d e(Z:G d!d" d"e*eZ;d#d$ Z<e
d%d&d'd(d) Z=d*d+ Z>d,S )-    )Mapping)AnyUnion)settings)get_user_model)permission_required)ExistsIntegerFieldMaxOuterRefQ)Cast)Media)Http404HttpResponse)gettext_lazy)TemplateView)hooks)
SearchForm)	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eeef fddZdefddZ	defdd	Z
d
eeef deeef fddZdd
eeef def fddZ  ZS )UpgradeNotificationPanelz+wagtailadmin/home/upgrade_notification.htmllast_upgrade_checkreturnc                 C      t tddS )NWAGTAIL_ENABLE_UPDATE_CHECKTgetattrr   self r*   X/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/admin/views/home.pyget_upgrade_check_setting)      z2UpgradeNotificationPanel.get_upgrade_check_settingc                 C   s&   |   }t|tr| dkrdS dS )NltsTF)r,   
isinstancestrlower)r)   upgrade_checkr*   r*   r+   upgrade_check_lts_only,   s   z/UpgradeNotificationPanel.upgrade_check_lts_onlyc                 C   s"   t |dd  }r|j| jS d S )Nwagtail_userprofile)r'   dismissiblesgetdismissible_id)r)   userprofiler*   r*   r+   get_dismissible_value2   s   z.UpgradeNotificationPanel.get_dismissible_valueparent_contextc                 C   s   |   | j| |d jdS )Nrequest)lts_onlyr7   dismissible_value)r3   r7   r:   r8   r)   r;   r*   r*   r+   get_context_data7   s   z)UpgradeNotificationPanel.get_context_dataNc                    s$   |d j jr|  rt |S dS )Nr<    )r8   is_superuserr,   superrender_htmlr?   	__class__r*   r+   rD   @   s   
z$UpgradeNotificationPanel.render_htmlN)__name__
__module____qualname__template_namer7   r   boolr0   r,   r3   r:   r   r   r@   rD   __classcell__r*   r*   rE   r+   r!   %   s    "(	r!   c                       s   e Zd ZdZdZdZdZdeee	f fddZ
de	fdd	Zd
ee	ef dee	ef fddZdd
ee	ef defddZdd
ee	ef de	f fddZ  ZS )WhatsNewInWagtailVersionPanelwhats_new_in_wagtail_versionz3wagtailadmin/home/whats_new_in_wagtail_version.htmln   4r#   c                 C   r$   )NWAGTAIL_ENABLE_WHATS_NEW_BANNERTr&   r(   r*   r*   r+   get_whats_new_banner_settingP   r-   z:WhatsNewInWagtailVersionPanel.get_whats_new_banner_settingc                 C   s   | j  d| j S )N_)name_versionr(   r*   r*   r+   get_dismissible_idS   s   z0WhatsNewInWagtailVersionPanel.get_dismissible_idr;   c                 C   s   |   | jdS )N)r7   version)rW   rV   r?   r*   r*   r+   r@   V   s   z.WhatsNewInWagtailVersionPanel.get_context_dataNc                 C   s:   |   sdS t|d jdd }|r|j|  rdS dS )NFr<   r4   T)rS   r'   r8   r5   r6   rW   )r)   r;   r9   r*   r*   r+   is_shownY   s   z&WhatsNewInWagtailVersionPanel.is_shownc                    s   |  |sdS t |S )NrA   )rY   rC   rD   r?   rE   r*   r+   rD   c   s   
z)WhatsNewInWagtailVersionPanel.render_htmlrG   )rH   rI   rJ   rU   rK   orderrV   r   rL   r0   rS   rW   r   r   r@   rY   rD   rM   r*   r*   rE   r+   rN   J   s    "(
rN   c                       (   e Zd ZdZdZdZ fddZ  ZS )$UserObjectsInWorkflowModerationPanel#user_objects_in_workflow_moderationz:wagtailadmin/home/user_objects_in_workflow_moderation.html   c                    s   |d }t  |}ttddrPt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 )Nr<   WAGTAIL_WORKFLOW_ENABLEDT)base_content_type_id	object_id)output_field)ownerid)requested_bycontent_objectcontent_object__latest_revisioncurrent_task_statecurrent_task_state__taskz-current_task_state__started_atworkflow_statesc                 S   s   g | ]}|j r|qS r*   )rf   ).0stater*   r*   r+   
<listcomp>   s
    zIUserObjectsInWorkflowModerationPanel.get_context_data.<locals>.<listcomp>)rC   r@   r'   r   r   r   rd   r   r   objectsfilterr8   r   r   r	   r   activeprefetch_relatedselect_relatedorder_bynone)r)   r;   r<   contextpages_owned_by_userrE   r*   r+   r@   n   s>   
z5UserObjectsInWorkflowModerationPanel.get_context_datarH   rI   rJ   rU   rK   rZ   r@   rM   r*   r*   rE   r+   r\   i   
    r\   c                       r[   )WorkflowObjectsToModeratePanel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 ]Q}|jj}|sFq=|jj||j}|j }d}	d}
d}t|tsq|j}|d}	|d}
|d}t|ddsyd }
|d ||j|j|j||||	|
|d
 q=|S )Nr<   states
csrf_tokenr_   Trevisionrevision__userworkflow_stateworkflow_state__workflowrevision__content_object)revision__content_object__latest_revisionz-started_at)previous_revision_idz"wagtailadmin_pages:workflow_actionz#wagtailadmin_pages:workflow_previewz$wagtailadmin_pages:revisions_compareworkflow_actionworkflow_previewrevisions_compareis_previewableF)
objr~   r   live_revision_id
task_stateactionsworkflow_tasksworkflow_action_url_nameworkflow_preview_url_namerevisions_compare_url_name)rC   r@   r'   r   r   rn   reviewable_byr8   rr   rq   rs   annotater   previous_revision_id_subqueryr~   rf   taskspecificget_actionsr   all_tasks_with_statusr/   r   snippet_viewsetget_url_nameappendr   r   )r)   r;   r<   ru   r|   rl   r   r   r   r   r   r   viewsetrE   r*   r+   r@      sj   




z/WorkflowObjectsToModeratePanel.get_context_datarw   r*   r*   rE   r+   ry      rx   ry   c                       r[   )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 )Nr<   T)locked	locked_byz
-locked_atz-latest_revision_created_atz-pk)deferunlockr}   )r   can_remove_locksr<   r}   )rC   r@   updater   rn   ro   r8   rs   r   r    user_has_permission)r)   r;   r<   ru   rE   r*   r+   r@      s$   
z!LockedPagesPanel.get_context_datarw   r*   r*   rE   r+   r      rx   r   c                       r[   )RecentEditsPanel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 }	|	rR||d |	f q>||d< ||d< |S )Nr<   WAGTAILADMIN_RECENT_EDITS_LIMIT   zwagtail.edit)r8   actionpage_id	timestamp)latest_datez-latest_datec                 S   s   g | ]}|d  qS )r   r*   )rk   logr*   r*   r+   rm     s    z5RecentEditsPanel.get_context_data.<locals>.<listcomp>r   
last_edits)rC   r@   r'   r   r   rn   ro   r8   valuesr   r
   rs   r   r   prefetch_workflow_statesannotate_approved_schedulein_bulkr6   r   )
r)   r;   r<   ru   
edit_countlast_edits_datespages_mappingr   r   pagerE   r*   r+   r@     s0   z!RecentEditsPanel.get_context_datarw   r*   r*   rE   r+   r     rx   r   c                       sH   e Zd ZdZedZeZ fddZg fddZ	dd Z
d	d
 Z  ZS )HomeViewzwagtailadmin/home.html	Dashboardc                    s   t  jdi |}|  }t| j}|  }| g |||d< t|dd d|d< ||d< t |d< t	t
dd	|d
< | jj|d< i ||S )Nmediac                 S   s   | j S rG   )rZ   )pr*   r*   r+   <lambda>3  s    z+HomeView.get_context_data.<locals>.<lambda>)keypanelssite_summaryupgrade_notificationu   Search all pages…)placeholdersearch_formr8   r*   )rC   r@   
get_panelsr   r<   get_site_details	get_mediasortedr!   r   rT   r8   )r)   kwargsru   r   r   site_detailsrE   r*   r+   r@   ,  s   

zHomeView.get_context_datac                 C   s   t  }|D ]}||j7 }q|S rG   )r   r   )r)   r   r   panelr*   r*   r+   r   ;  s   zHomeView.get_mediac                 C   s8   | j }t t t t g}tdD ]}||| q|S )Nconstruct_homepage_panels)r<   ry   r\   r   r   r   	get_hooks)r)   r<   r   fnr*   r*   r+   r   C  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   )r<   r   r8   )r)   r<   siter*   r*   r+   r   S  s   
zHomeView.get_site_details)rH   rI   rJ   rK   rT   
page_titler    permission_policyr@   r   r   r   rM   r*   r*   rE   r+   r   '  s    r   c                 C   s   t d)Nz1This is a test of the emergency broadcast system.)	Exceptionr<   r*   r*   r+   
error_test^  s   r   zwagtailadmin.access_adminwagtailadmin_login)	login_urlc                 C   s   t )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.
    )r   r   r*   r*   r+   defaultb  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+   spriten  s   r   N)?collections.abcr   typingr   r   django.confr   django.contrib.authr   django.contrib.auth.decoratorsr   django.db.modelsr   r	   r
   r   r   django.db.models.functionsr   django.formsr   django.httpr   r   django.utils.translationr   rT   django.views.generic.baser   wagtailr   wagtail.admin.forms.searchr   wagtail.admin.iconsr   wagtail.admin.navigationr   wagtail.admin.site_summaryr   wagtail.admin.ui.componentsr   wagtail.admin.views.genericr   wagtail.modelsr   r   r   r   r   r   wagtail.permissionsr    Userr!   rN   r\   ry   r   r   r   r   r   r   r*   r*   r*   r+   <module>   s@     %2L&7

