U
    {h                     @   s   d dl 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 d dlmZ d dlmZmZmZmZ e d	Zd$d
dZdd Zdd Zdd Zdd Ze Zedd Zdd Zdd Z dd Z!dd Z"dd Z#d d! Z$d"d# Z%dS )%    N)contextmanager)Local)cache)transaction)post_deletepost_migrate	post_save
pre_deletepre_migrate)ParentalKey)LocalePageReferenceIndexSiteZwagtailc                 K   s   t   d S Nr   Zclear_site_root_paths_cache)instanceZupdate_fieldskwargs r   _/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/signal_handlers.pypost_save_site_signal_handler   s    r   c                 K   s   t   d S r   r   r   r   r   r   r   post_delete_site_signal_handler   s    r   c                 K   s   |j r|jdd d d S )NF)commitZ
log_action)liveZ	unpublishsenderr   r   r   r   r   pre_delete_page_unpublish   s    r   c                 K   s   t d|j|j d S )NzPage deleted: "%s" id=%d)loggerinfotitleidr   r   r   r   post_delete_page_log_deletion%   s    r"   c                 K   s   t d d S )NZwagtail_locales_display_name)r   deleter   r   r   r   !reset_locales_display_names_cache)   s    r$   c                   c   s   zdt _dV  W 5 t `X dS )a  
    A context manager that can be used to temporarily disable the reference index auto-update signal handlers.

    For example:

    with disable_reference_index_auto_update():
        my_instance.save()  # Reference index will not be updated by this save
    TN)$reference_index_auto_update_disabledvaluer   r   r   r   #disable_reference_index_auto_update0   s    

r'   c              	   K   s   | ddrd S ttddr d S ttdd | j }|s>q\t| |d j} | d kr d S q t	| jj
rt  t|  W 5 Q R X d S )NrawFr&   c                 S   s
   t | tS r   )
isinstancer   )fieldr   r   r   <lambda>M       z0update_reference_index_on_save.<locals>.<lambda>r   )getgetattrr%   listfilter_metaZ
get_fieldsnamer   Z
is_indexedmodelr   atomicZcreate_or_update_for_object)r   r   Zparental_keysr   r   r   update_reference_index_on_saveA   s$    
r5   c              	   K   s2   t tddrd S t  t|  W 5 Q R X d S )Nr&   F)r.   r%   r   r4   r   Zremove_for_objectr   r   r   r    remove_reference_index_on_delete^   s    
r6   c                 C   s    t jt| d tjt| d d S N)r   )r   connectr5   r   r6   r3   r   r   r   1connect_reference_index_signal_handlers_for_modelf   s    r:   c                  K   s   t jD ]}t| qd S r   )r   tracked_modelsr:   r   r3   r   r   r   'connect_reference_index_signal_handlersk   s    
r=   c                 C   s    t jt| d tjt| d d S r7   )r   Z
disconnectr5   r   r6   r9   r   r   r   4disconnect_reference_index_signal_handlers_for_modelp   s    r>   c                  K   s   t jD ]}t| qd S r   )r   r;   r>   r<   r   r   r   *disconnect_reference_index_signal_handlersu   s    
r?   c                   C   sl   t jttd tjttd tjttd tjt	td t jt
td tjt
td tt tt d S r7   )r   r8   r   r   r   r   r	   r   r   r"   r$   r   r
   r?   r   r=   r   r   r   r   register_signal_handlersz   s    
r@   )N)&logging
contextlibr   Zasgiref.localr   Zdjango.core.cacher   Z	django.dbr   Zdjango.db.models.signalsr   r   r   r	   r
   Zmodelcluster.fieldsr   Zwagtail.modelsr   r   r   r   	getLoggerr   r   r   r   r"   r$   r%   r'   r5   r6   r:   r=   r>   r?   r@   r   r   r   r   <module>   s.   


