U
    {h                     @   s   d dl 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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 d dlmZ ddlmZ G dd deZG dd deZdS )    N)get_user_model)ValidationError)OuterRefSubquery)gettext_lazy)ContentTypeFilterWagtailFilterSet)AdminDateInput)get_content_type_label)PagePageLogEntryget_page_content_types)page_permission_policy)get_deleted_user_display_name   )PageReportViewc                   @   sB   e Zd ZejeddedZeeddd dZ	G dd	 d	Z
d
S )AgingPagesReportFilterSetzLast published beforeZlte)labelZlookup_exprZwidgetTypec                 C   s
   t ddS )NF)Zinclude_base_page_type)r   )request r   o/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/admin/views/reports/aging_pages.py<lambda>       z"AgingPagesReportFilterSet.<lambda>)r   querysetc                   @   s   e Zd ZeZdddgZdS )zAgingPagesReportFilterSet.Metalivelast_published_atcontent_typeN)__name__
__module____qualname__r   modelfieldsr   r   r   r   Meta   s   r#   N)r   r   r    django_filtersZDateTimeFilter_r	   r   r   r   r#   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Z
edededed	d
ZdddddgZdddgZ fddZdd Zdd Zdd Z fddZ  ZS )AgingPagesViewz-wagtailadmin/reports/aging_pages_results.htmlzAging pagestimez wagtailadmin_reports:aging_pagesz(wagtailadmin_reports:aging_pages_resultsStatuszLast published atzLast published byr   )status_stringr   last_published_by_userr   titler)   r   r*   r   addZchangepublishc                    s<   t  jf | t | _| j | _| jt| jti| jd< d S )Nr   )	super__init__r   
user_modelZcustom_field_preprocesscopyZ
FORMAT_CSVr
   ZFORMAT_XLSX)selfkwargs	__class__r   r   r/   5   s      zAgingPagesView.__init__c                 C   s   | j jj|S )N)r0   _metapkZ	to_python)r2   user_idr   r   r   user_id_to_python?   s    z AgingPagesView.user_id_to_pythonc                 C   sV   |j rLz| |j }W n tk
r0   |j }Y nX ||t|d}||_nd|_d S )N)r8    )last_published_byr9   r   getr   r*   )r2   username_mappingpageZuser_id_valuer*   r   r   r   add_last_publisher_name_to_pageB   s     z.AgingPagesView.add_last_publisher_name_to_pagec                 C   sF   t |jddd}dd | jjj|dD }|D ]}| || q0|S )Nr;   T)Zflatc                 S   s   i | ]}|j | qS r   )r7   Zget_username).0userr   r   r   
<dictcomp>Y   s    z>AgingPagesView.decorate_paginated_queryset.<locals>.<dictcomp>)Zpk__in)setZvalues_listr0   objectsfilterr?   )r2   r   Zuser_idsr=   r>   r   r   r   decorate_paginated_querysetV   s    z*AgingPagesView.decorate_paginated_querysetc                    sf   t jjtddd}t| jjdjdd	 
d djt|d	d d
 d| _t  S )Nr7   zwagtail.publish)r>   Zaction__exactr-   T)Zlast_published_at__isnullr   r   rA   r   )r;   )r   rD   rE   r   r   Z!instances_user_has_permission_forr   rA   excludeZprefetch_workflow_statesZselect_relatedZannotate_approved_scheduleZorder_byZannotater   valuesr   r.   get_queryset)r2   Zlatest_publishing_logr4   r   r   rI   a   s$      
	zAgingPagesView.get_queryset)r   r   r    Zresults_template_namer%   Z
page_titleZheader_iconr   Zfilterset_classZindex_url_nameZindex_results_url_nameZexport_headingsZlist_exportZany_permission_requiredr/   r9   r?   rF   rI   __classcell__r   r   r4   r   r&      s.   

r&   )r$   Zdjango.contrib.authr   Zdjango.core.exceptionsr   Zdjango.db.modelsr   r   Zdjango.utils.translationr   r%   Zwagtail.admin.filtersr   r   Zwagtail.admin.widgetsr	   Zwagtail.coreutilsr
   Zwagtail.modelsr   r   r   Zwagtail.permissionsr   Zwagtail.users.utilsr   baser   r   r&   r   r   r   r   <module>   s   