o
    hN\                     @   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 d dlmZ d dlmZmZmZm Z  d dl!m"Z" d dl#m$Z$m%Z% ervd dl&m'Z' dd Z(e)ddd Z*e)ddd Z+e,eddre)ddd Z-e)dd d! Z.e)d"d#d$ Z/e)d%d&d' Z0e)d%d(d) Z1ej)d*d d+d,ed-d.fd/d0Z2d1S )2    )TYPE_CHECKING)settings)
Permission)redirect_to_login)models)reverse)add_never_cache_headers)capfirst)gettext_lazy)ngettext)hooks)
HTTPMethod)get_content_languages)LogFormatter)ModelLogEntryPagePageLogEntryPageViewRestriction)PageLinkHandler)parse_datetime_localizedrender_timestamp)HttpRequestc                 C   s   t tdtd}t| |S )NWAGTAIL_FRONTEND_LOGIN_URLwagtailcore_login)getattrr   r   r   )next	login_url r   U/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/wagtail_hooks.pyrequire_wagtail_login   s   

r   on_serve_pagec                    s    fdd}|S )Nc           
         s   |   }d}|D ]N}||sV|jtjkr>ddlm} ||d| id}td|j	| j	gd}	| 
|||	}t| |  S |jtjtjfv rVt| d}t| |  S q | |||}|rdt| |S )	as  
        Check whether there are any view restrictions on this page which are
        not fulfilled by the given request object. If there are, return an
        HttpResponse that will notify the user of that restriction (and possibly
        include a password / login form that will allow them to proceed). If
        there are no such restrictions, return None
        Nr   )PasswordViewRestrictionForm
return_url)instanceinitial&wagtailcore_authenticate_with_password)args)r   )get_view_restrictionsaccept_requestrestriction_typer   PASSWORDwagtail.formsr!   get_full_pathr   id serve_password_required_responser   LOGINGROUPSr   )
pagerequest
serve_argsserve_kwargsrestrictionsresponserestrictionr!   form
action_urlcallbackr   r   inner"   s>   


z&check_view_restrictions.<locals>.innerr   )r;   r<   r   r:   r   check_view_restrictions    s   *r=   register_rich_text_featuresc                 C   sf   | j d | j d | t | j d | j d | j g d | j d | j d d S )Nhrlinkbolditalic)h2h3h4olul)default_featuresappendregister_link_typer   extend)featuresr   r   r   register_core_featuresO   s   
rM   WAGTAIL_WORKFLOW_ENABLEDTregister_permissionsc                   C      t jjdg ddS )Nwagtailcore)add_workflowchange_workflowdelete_workflowcontent_type__app_labelcodename__inr   objectsfilterr   r   r   r   register_workflow_permissionsc      r[   c                   C   rP   )NrQ   )add_taskchange_taskdelete_taskrU   rX   r   r   r   r   register_task_permissionsj   r\   r`   describe_collection_contentsc                 C   s8   |    }|rtd}|tdd|d|i |dS d S )Nzwagtailadmin_collections:indexz%(count)s descendant collectionz %(count)s descendant collectionscount)rb   
count_texturl)get_descendantsrb   r   r   )
collectiondescendant_countrd   r   r   r   describe_collection_childrenr   s   rh   register_log_actionsc                 C   s(  |  tjt |  tt | dtdtd | dtdtd | dtdtd	 | d
tdtd | dtdtd | dtdtd | dtdtd | dtdtd | dtdtd | dtdtd | dtd td! | d"G d#d$ d$t}| d%G d&d' d't}| d(G d)d* d*t}| d+G d,d- d-t}| d.G d/d0 d0t}| d1G d2d3 d3t}| d4G d5d6 d6t}| d7G d8d9 d9t}| d:G d;d< d<t}	| d=G d>d? d?t}
| d@G dAdB dBt}| dCG dDdE dEt}| dFG dGdH dHt}G dIdJ dJt}| dKG dLdM dM|}| dNG dOdP dP|}| dQG dRdS dS|}| dTG dUdV dV|}| dWG dXdY dY|}| dZG d[d\ d\|}| d]G d^d_ d_|}d S )`Nzwagtail.createCreateCreatedzwagtail.editEditEditedzwagtail.deleteDeleteDeletedzwagtail.publishPublish	Publishedzwagtail.publish.scheduledzPublish scheduled draftzPublished scheduled draftzwagtail.unpublish	UnpublishUnpublishedzwagtail.unpublish.scheduledzUnpublish scheduled draftzUnpublished scheduled draftzwagtail.lockLockLockedzwagtail.unlockUnlockUnlockedzwagtail.moderation.approveApproveApprovedzwagtail.moderation.rejectRejectRejectedzwagtail.renamec                   @      e Zd ZedZdd ZdS )z8register_core_log_actions.<locals>.RenameActionFormatterRenamec                 S   sD   zt d|jd d |jd d d W S  ty!   t d Y S w )Nz#Renamed from '%(old)s' to '%(new)s'titleoldnew)r   r   Renamed_dataKeyErrorself	log_entryr   r   r   format_message      
zGregister_core_log_actions.<locals>.RenameActionFormatter.format_messageN__name__
__module____qualname__r   labelr   r   r   r   r   RenameActionFormatter       r   zwagtail.revertc                   @   r|   )z8register_core_log_actions.<locals>.RevertActionFormatterRevertc                 S   sL   zt d|jd d tt|jd d d W S  ty%   t d Y S w )NzIReverted to previous revision with id %(revision_id)s from %(created_at)srevisionr-   created)revision_id
created_atzReverted to previous revision)r   r   r   r   r   r   r   r   r   r      s   
zGregister_core_log_actions.<locals>.RevertActionFormatter.format_messageNr   r   r   r   r   RevertActionFormatter   r   r   zwagtail.copyc                   @   r|   )z6register_core_log_actions.<locals>.CopyActionFormatterCopyc                 S   8   zt dd|jd d i W S  ty   t d Y S w )NzCopied from %(title)sr~   sourceCopiedr   r   r   r   r   r         zEregister_core_log_actions.<locals>.CopyActionFormatter.format_messageNr   r   r   r   r   CopyActionFormatter   r   r   zwagtail.copy_for_translationc                   @   r|   )zDregister_core_log_actions.<locals>.CopyForTranslationActionFormatterzCopy for translationc                 S   sP   zt d|jd d t |jd d pdd W S  ty'   t d Y S w )	Nz2Copied for translation from %(title)s (%(locale)s)r   r~   source_localelanguage_code )r~   localezCopied for translation)r   r   r   getr   r   r   r   r   r      s   
zSregister_core_log_actions.<locals>.CopyForTranslationActionFormatter.format_messageNr   r   r   r   r   !CopyForTranslationActionFormatter   r   r   zwagtail.create_aliasc                   @   r|   )z=register_core_log_actions.<locals>.CreateAliasActionFormatterzCreate aliasc                 S   r   )NzCreated an alias of %(title)sr~   r   zCreated an aliasr   r   r   r   r   r      r   zLregister_core_log_actions.<locals>.CreateAliasActionFormatter.format_messageNr   r   r   r   r   CreateAliasActionFormatter   r   r   zwagtail.convert_aliasc                   @   r|   )z>register_core_log_actions.<locals>.ConvertAliasActionFormatterz Convert alias into ordinary pagec                 S   r   )Nz5Converted the alias '%(title)s' into an ordinary pager~   r1   z(Converted an alias into an ordinary pager   r   r   r   r   r      r   zMregister_core_log_actions.<locals>.ConvertAliasActionFormatter.format_messageNr   r   r   r   r   ConvertAliasActionFormatter   r   r   zwagtail.movec                   @   r|   )z6register_core_log_actions.<locals>.MoveActionFormatterMovec                 S   sD   zt d|jd d |jd d d W S  ty!   t d Y S w )Nz/Moved from '%(old_parent)s' to '%(new_parent)s'r   r~   destination)
old_parent
new_parentMovedr   r   r   r   r   r      r   zEregister_core_log_actions.<locals>.MoveActionFormatter.format_messageNr   r   r   r   r   MoveActionFormatter   r   r   zwagtail.reorderc                   @   r|   )z9register_core_log_actions.<locals>.ReorderActionFormatterReorderc                 S   s8   zt dd|jd d i W S  ty   t d Y S w )NzReordered under '%(parent)s'parentr   r~   	Reorderedr   r   r   r   r   r     r   zHregister_core_log_actions.<locals>.ReorderActionFormatter.format_messageNr   r   r   r   r   ReorderActionFormatter   r   r   zwagtail.publish.schedulec                   @   r|   )zAregister_core_log_actions.<locals>.SchedulePublishActionFormatterzSchedule publicationc                 S   s   z;|j d d r*td|j d d tt|j d d tt|j d d d W S tddtt|j d d i W S  tyH   td	 Y S w )
Nr   has_live_versionzXRevision %(revision_id)s from %(created_at)s scheduled for publishing at %(go_live_at)s.r-   r   
go_live_atr   r   r   z/Page scheduled for publishing at %(go_live_at)szPage scheduled for publishingr   r   r   r   r   r   r   r   r   r     s8   zPregister_core_log_actions.<locals>.SchedulePublishActionFormatter.format_messageNr   r   r   r   r   SchedulePublishActionFormatter  r   r   zwagtail.schedule.cancelc                   @   r|   )zGregister_core_log_actions.<locals>.UnschedulePublicationActionFormatterzUnschedule publicationc                 S   s   zP|j d d r3td|j d d tt|j d d |j d d r-tt|j d d nd d W S tdd|j d d rLtt|j d d i W S d i W S  ty]   td	 Y S w )
Nr   r   z[Revision %(revision_id)s from %(created_at)s unscheduled from publishing at %(go_live_at)s.r-   r   r   r   z1Page unscheduled for publishing at %(go_live_at)sz Page unscheduled from publishingr   r   r   r   r   r   0  sD   
	zVregister_core_log_actions.<locals>.UnschedulePublicationActionFormatter.format_messageNr   r   r   r   r   $UnschedulePublicationActionFormatter,  r   r   zwagtail.view_restriction.createc                   @   r|   )zDregister_core_log_actions.<locals>.AddViewRestrictionActionFormatterzAdd view restrictionsc                 S   8   zt dd|jd d i W S  ty   t d Y S w )Nz,Added the '%(restriction)s' view restrictionr7   r~   zAdded view restrictionr   r   r   r   r   r   U  r   zSregister_core_log_actions.<locals>.AddViewRestrictionActionFormatter.format_messageNr   r   r   r   r   !AddViewRestrictionActionFormatterQ  r   r   zwagtail.view_restriction.editc                   @   r|   )zEregister_core_log_actions.<locals>.EditViewRestrictionActionFormatterzUpdate view restrictionsc                 S   r   )Nz1Updated the view restriction to '%(restriction)s'r7   r~   zUpdated view restrictionr   r   r   r   r   r   a  r   zTregister_core_log_actions.<locals>.EditViewRestrictionActionFormatter.format_messageNr   r   r   r   r   "EditViewRestrictionActionFormatter]  r   r   zwagtail.view_restriction.deletec                   @   r|   )zGregister_core_log_actions.<locals>.DeleteViewRestrictionActionFormatterzRemove view restrictionsc                 S   r   )NzCRemoved the '%(restriction)s' view restriction. The page is public.r7   r~   zRemoved view restrictionr   r   r   r   r   r   m  s   zVregister_core_log_actions.<locals>.DeleteViewRestrictionActionFormatter.format_messageNr   r   r   r   r   $DeleteViewRestrictionActionFormatteri  r   r   c                   @   s   e Zd Zedd ZdS )z6register_core_log_actions.<locals>.CommentLogFormatterc                 S   s    | dd }t| j|jS )z
            Finds the translated field label for the given model and content path

            Raises LookupError if not found
            .r   )splitr	   _meta	get_fieldverbose_name)modelcontent_path
field_namer   r   r   _field_label_from_content_pathx  s   zUregister_core_log_actions.<locals>.CommentLogFormatter._field_label_from_content_pathN)r   r   r   staticmethodr   r   r   r   r   CommentLogFormatterw  s    r   zwagtail.comments.createc                   @   r|   )z?register_core_log_actions.<locals>.CreateCommentActionFormatterzAdd commentc                 S   P   zt d| |jj|jd d |jd d d W S  ty'   t d Y S w )Nz.Added a comment on field %(field)s: "%(text)s"commentcontentpathtextfieldr   zAdded a commentr   r   r1   specific_classr   r   r   r   r   r   r        
zNregister_core_log_actions.<locals>.CreateCommentActionFormatter.format_messageNr   r   r   r   r   CreateCommentActionFormatter  r   r   zwagtail.comments.editc                   @   r|   )z=register_core_log_actions.<locals>.EditCommentActionFormatterzEdit commentc                 S   r   )Nz/Edited a comment on field %(field)s: "%(text)s"r   r   r   r   zEdited a commentr   r   r   r   r   r     r   zLregister_core_log_actions.<locals>.EditCommentActionFormatter.format_messageNr   r   r   r   r   EditCommentActionFormatter  r   r   zwagtail.comments.deletec                   @   r|   )z?register_core_log_actions.<locals>.DeleteCommentActionFormatterzDelete commentc                 S   r   )Nz0Deleted a comment on field %(field)s: "%(text)s"r   r   r   r   zDeleted a commentr   r   r   r   r   r     r   zNregister_core_log_actions.<locals>.DeleteCommentActionFormatter.format_messageNr   r   r   r   r   DeleteCommentActionFormatter  r   r   zwagtail.comments.resolvec                   @   r|   )z@register_core_log_actions.<locals>.ResolveCommentActionFormatterzResolve commentc                 S   r   )Nz1Resolved a comment on field %(field)s: "%(text)s"r   r   r   r   zResolved a commentr   r   r   r   r   r     r   zOregister_core_log_actions.<locals>.ResolveCommentActionFormatter.format_messageNr   r   r   r   r   ResolveCommentActionFormatter  r   r   zwagtail.comments.create_replyc                   @   r|   )z=register_core_log_actions.<locals>.CreateReplyActionFormatterzReply to commentc                 S   P   zt d| |jj|jd d |jd d d W S  ty'   t d Y S w )Nz1Replied to comment on field %(field)s: "%(text)s"r   r   replyr   r   zReplied to a commentr   r   r   r   r   r     r   zLregister_core_log_actions.<locals>.CreateReplyActionFormatter.format_messageNr   r   r   r   r   CreateReplyActionFormatter  r   r   zwagtail.comments.edit_replyc                   @   r|   )z;register_core_log_actions.<locals>.EditReplyActionFormatterzEdit reply to commentc                 S   r   )Nz:Edited a reply to a comment on field %(field)s: "%(text)s"r   r   r   r   r   zEdited a replyr   r   r   r   r   r        	zJregister_core_log_actions.<locals>.EditReplyActionFormatter.format_messageNr   r   r   r   r   EditReplyActionFormatter  r   r   zwagtail.comments.delete_replyc                   @   r|   )z=register_core_log_actions.<locals>.DeleteReplyActionFormatterzDelete reply to commentc                 S   r   )Nz;Deleted a reply to a comment on field %(field)s: "%(text)s"r   r   r   r   r   zDeleted a replyr   r   r   r   r   r     r   zLregister_core_log_actions.<locals>.DeleteReplyActionFormatter.format_messageNr   r   r   r   r   DeleteReplyActionFormatter  r   r   )	register_modelr   Modelr   r   r   register_actionr   r   )actionsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   register_core_log_actions   s|    $r   c                 C   s   G dd dt }| dG dd d|}| dG dd d|}| d	G d
d d|}| dG dd d|}| dG dd d|}d S )Nc                   @   s   e Zd Zdd ZdS )z;register_workflow_log_actions.<locals>.WorkflowLogFormatterc                 S   s   |j ddS )Nr   r   )r   r   r   r   r   r   format_comment  s   zJregister_workflow_log_actions.<locals>.WorkflowLogFormatter.format_commentN)r   r   r   r   r   r   r   r   WorkflowLogFormatter  s    r   zwagtail.workflow.startc                   @   r|   )zCregister_workflow_log_actions.<locals>.StartWorkflowActionFormatterzWorkflow: startc              	   S   L   zt d|jd d |jd d d d W S  ttfy%   t d Y S w )Nz,'%(workflow)s' started. Next step '%(task)s'workflowr~   r   r   taskzWorkflow startedr   r   r   	TypeErrorr   r   r   r   r        
zRregister_workflow_log_actions.<locals>.StartWorkflowActionFormatter.format_messageNr   r   r   r   r   StartWorkflowActionFormatter  r   r   zwagtail.workflow.approvec                   @   r|   )zEregister_workflow_log_actions.<locals>.ApproveWorkflowActionFormatterzWorkflow: approve taskc              	   S   s   z5|j d d r td|j d d d |j d d d d W S td|j d d d |j d d d W S  ttfyD   td	 Y S w )
Nr   r   z1Approved at '%(task)s'. Next step '%(next_task)s'r   r~   )r   	next_taskz/Approved at '%(task)s'. '%(workflow)s' complete)r   r   zWorkflow task approved)r   r   r   r   r   r   r   r   r     s   

zTregister_workflow_log_actions.<locals>.ApproveWorkflowActionFormatter.format_messageNr   r   r   r   r   ApproveWorkflowActionFormatter
  r   r   zwagtail.workflow.rejectc                   @   r|   )zDregister_workflow_log_actions.<locals>.RejectWorkflowActionFormatterzWorkflow: reject taskc              	   S   @   zt dd|jd d d i W S  ttfy   t d Y S w )Nz)Rejected at '%(task)s'. Changes requestedr   r   r~   z)Workflow task rejected. Workflow completer   r   r   r   r   r   !     zSregister_workflow_log_actions.<locals>.RejectWorkflowActionFormatter.format_messageNr   r   r   r   r   RejectWorkflowActionFormatter  r   r   zwagtail.workflow.resumec                   @   r|   )zDregister_workflow_log_actions.<locals>.ResumeWorkflowActionFormatterzWorkflow: resume taskc              	   S   r   )Nz(Resubmitted '%(task)s'. Workflow resumedr   r   r~   z+Workflow task resubmitted. Workflow resumedr   r   r   r   r   r   -  r   zSregister_workflow_log_actions.<locals>.ResumeWorkflowActionFormatter.format_messageNr   r   r   r   r   ResumeWorkflowActionFormatter)  r   r   zwagtail.workflow.cancelc                   @   r|   )zDregister_workflow_log_actions.<locals>.CancelWorkflowActionFormatterzWorkflow: cancelc              	   S   r   )Nz&Cancelled '%(workflow)s' at '%(task)s'r   r~   r   r   zWorkflow cancelledr   r   r   r   r   r   9  r   zSregister_workflow_log_actions.<locals>.CancelWorkflowActionFormatter.format_messageNr   r   r   r   r   CancelWorkflowActionFormatter5  r   r   )r   r   )r   r   r   r   r   r   r   r   r   r   register_workflow_log_actions  s   r   before_serve_page)orderr1   r2   r   c                 O   sN   | j |g|R i |}|dur|S |jtjjkr%| j|g|R i |S dS )z
    Before serving, check the request method is permitted by the page,
    and use the page object's :meth:``wagtail.models.Page.handle_options_request``
    method to generate a response if the OPTIONS HTTP verb is used.
    N)check_request_methodmethodr   OPTIONSvaluehandle_options_request)r1   r2   r&   kwargscheck_responser   r   r   r   C  s   r   N)3typingr   django.confr   django.contrib.auth.modelsr   django.contrib.auth.viewsr   	django.dbr   django.urlsr   django.utils.cacher   django.utils.textr	   django.utils.translationr
   r   r   wagtailr   wagtail.compatr   wagtail.coreutilsr   wagtail.log_actionsr   wagtail.modelsr   r   r   r   wagtail.rich_text.pagesr   wagtail.utils.timestampsr   r   django.httpr   r   registerr=   rM   r   r[   r`   rh   r   r   r   r   r   r   r   <module>   sN    
.




  u
K