a
    Dgp                     @   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mZmZmZ dd	l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)LocalePageReferenceIndexSite   )update_reference_index_taskZwagtailc                 K   s   t   d S Nr   Zclear_site_root_paths_cache)instanceZupdate_fieldskwargs r   V/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/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)Z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 t `nt `0 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_update1   s    
r'   c                 K   s@   | ddrd S ttddr d S t| jj| jjt| j	 d S )NrawFr&   )
getgetattrr%   r   enqueueZ_metaZ	app_labelZ
model_namestrpkr   r   r   r   update_reference_index_on_saveB   s    r.   c                 K   sF   t tddrd S t  t|  W d    n1 s80    Y  d S )Nr&   F)r*   r%   r   Zatomicr   Zremove_for_objectr   r   r   r    remove_reference_index_on_deleteO   s    
r/   c                 C   s    t jt| d tjt| d d S N)r   )r   connectr.   r   r/   modelr   r   r   1connect_reference_index_signal_handlers_for_modelW   s    r4   c                  K   s   t jD ]}t| qd S r   )r   tracked_modelsr4   r   r3   r   r   r   'connect_reference_index_signal_handlers\   s    
r7   c                 C   s    t jt| d tjt| d d S r0   )r   Z
disconnectr.   r   r/   r2   r   r   r   4disconnect_reference_index_signal_handlers_for_modela   s    r8   c                  K   s   t jD ]}t| qd S r   )r   r5   r8   r6   r   r   r   *disconnect_reference_index_signal_handlersf   s    
r9   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 r0   )r   r1   r   r   r   r   r	   r   r   r"   r$   r   r
   r9   r   r7   r   r   r   r   register_signal_handlersk   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wagtail.modelsr   r   r   r   Ztasksr   	getLoggerr   r   r   r   r"   r$   r%   r'   r.   r/   r4   r7   r8   r9   r:   r   r   r   r   <module>   s.   


