
    Nwg                     F    d dl mZ d dlmZ  G d d      Z G d de      Zy)    )models)
NotHandledc                   .    e Zd ZdZd Zd Zd Zd Zd Zy)BaseSignalProcessorz
    A convenient way to attach Haystack to Django's signals & cause things to
    index.

    By default, does nothing with signals but provides underlying functionality.
    c                 @    || _         || _        | j                          y N)connectionsconnection_routersetup)selfr	   r
   s      G/var/www/horilla/myenv/lib/python3.12/site-packages/haystack/signals.py__init__zBaseSignalProcessor.__init__   s    &!2

    c                      y)z
        A hook for setting up anything necessary for
        ``handle_save/handle_delete`` to be executed.

        Default behavior is to do nothing (``pass``).
        N r   s    r   r   zBaseSignalProcessor.setup        	r   c                      y)z
        A hook for tearing down anything necessary for
        ``handle_save/handle_delete`` to no longer be executed.

        Default behavior is to do nothing (``pass``).
        Nr   r   s    r   teardownzBaseSignalProcessor.teardown   r   r   c                     | j                   j                  |      }|D ]B  }	 | j                  |   j                         j	                  |      }|j                  ||       D y# t        $ r Y Qw xY w)z
        Given an individual model instance, determine which backends the
        update should be sent to & update the object on those backends.
        instanceusingN)r
   	for_writer	   get_unified_index	get_indexupdate_objectr   r   senderr   kwargsusing_backendsr   indexs          r   handle_savezBaseSignalProcessor.handle_save'   |    
 //9989L# 	E((/AACMMfU##HE#:	     ?A%%	A10A1c                     | j                   j                  |      }|D ]B  }	 | j                  |   j                         j	                  |      }|j                  ||       D y# t        $ r Y Qw xY w)z
        Given an individual model instance, determine which backends the
        delete should be sent to & delete the object on those backends.
        r   r   N)r
   r   r	   r   r   remove_objectr   r   s          r   handle_deletez!BaseSignalProcessor.handle_delete6   r%   r&   N)	__name__
__module____qualname____doc__r   r   r   r$   r)   r   r   r   r   r      s     
r   r   c                       e Zd ZdZd Zd Zy)RealtimeSignalProcessorzs
    Allows for observing when saves/deletes fire & automatically updates the
    search engine appropriately.
    c                     t         j                  j                  j                  | j                         t         j                  j
                  j                  | j                         y r   )r   signals	post_saveconnectr$   post_deleter)   r   s    r   r   zRealtimeSignalProcessor.setupL   s>      (()9)9:""**4+=+=>r   c                     t         j                  j                  j                  | j                         t         j                  j
                  j                  | j                         y r   )r   r1   r2   
disconnectr$   r4   r)   r   s    r   r   z RealtimeSignalProcessor.teardownS   s>      ++D,<,<=""--d.@.@Ar   N)r*   r+   r,   r-   r   r   r   r   r   r/   r/   F   s    
?Br   r/   N)	django.dbr   haystack.exceptionsr   r   r/   r   r   r   <module>r9      s%     *= =@B1 Br   