o
    h                     @   sj   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 G dd deZdddZd	S )    )settings)BaseCommand)Q)ProtectedError)timezone)RevisionWorkflowStatec                   @   s    e Zd ZdZdd Zdd ZdS )CommandzlDelete revisions which are not the latest revision, published or scheduled to be published, or in moderationc                 C   s4   |j dtdd |j dddd |j ddd	d d S )
Nz--daysz4Only delete revisions older than this number of days)typehelpz--pages
store_truez$Only delete revisions of page models)actionr   z--non-pagesz(Only delete revisions of non-page models)add_argumentint)selfparser r   k/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/management/commands/purge_revisions.pyadd_arguments   s   
zCommand.add_argumentsc                 O   sx   | d}| d}| d}t|||d\}}|r4| j| jd|  | j| jd|  d S | jd d S )Ndayspages	non_pages)r   r   r   z!Successfully deleted %s revisionszYIgnored %s revisions because one or more protected relations exist that prevent deletion.zNo revisions deleted)getpurge_revisionsstdoutwritestyleSUCCESS)r   argsoptionsr   r   r   revisions_deletedprotected_error_countr   r   r   handle   s(   



zCommand.handleN)__name__
__module____qualname__r   r   r"   r   r   r   r   r	   
   s    r	   NTc           	   	   C   s   ||kr
t j }n|rt j }n|rt j }|jdd}ttddr4|tt	j
dtt	jdB }| rFt tj| d }|j|d}d}d}| D ]}| slz
|  |d	7 }W qN tyk   |d	7 }Y qNw qN||fS )
NF)approved_go_live_at__isnullWAGTAIL_WORKFLOW_ENABLEDT)#task_states__workflow_state__status)r   )created_at__ltr      )r   objectsallpage_revisionsnot_page_revisionsexcludegetattrr   r   r   STATUS_IN_PROGRESSSTATUS_NEEDS_CHANGESr   now	timedeltafilteriteratoris_latest_revisiondeleter   )	r   r   r   r+   purgeable_revisionspurgeable_untildeleted_revisions_countr!   revisionr   r   r   r   7   s<   


r   )NTT)django.confr   django.core.management.baser   django.db.modelsr   django.db.models.deletionr   django.utilsr   wagtail.modelsr   r   r	   r   r   r   r   r   <module>   s    -