o
    ›¨Êhî  ã                   @   s:   d dl mZ d dlmZ G dd„ dƒZG dd„ deƒZdS )é    )Úmodels)Ú
NotHandledc                   @   s8   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )Ú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                 C   s   || _ || _|  ¡  d S ©N)ÚconnectionsÚconnection_routerÚsetup)Úselfr   r   © r
   úB/var/www/html/env/lib/python3.10/site-packages/haystack/signals.pyÚ__init__   s   zBaseSignalProcessor.__init__c                 C   ó   dS )z«
        A hook for setting up anything necessary for
        ``handle_save/handle_delete`` to be executed.

        Default behavior is to do nothing (``pass``).
        Nr
   ©r	   r
   r
   r   r      ó   zBaseSignalProcessor.setupc                 C   r   )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   r
   r
   r   Úteardown   r   zBaseSignalProcessor.teardownc              	   K   óT   | j j|d�}|D ]}z| j|  ¡  |¡}|j||d� W q	 ty'   Y q	w dS )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   Úindexr
   r
   r   Úhandle_save'   ó   þüzBaseSignalProcessor.handle_savec              	   K   r   )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   r
   r
   r   Úhandle_delete6   r    z!BaseSignalProcessor.handle_deleteN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r"   r
   r
   r
   r   r      s    

r   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚRealtimeSignalProcessorzs
    Allows for observing when saves/deletes fire & automatically updates the
    search engine appropriately.
    c                 C   ó$   t jj | j¡ t jj | j¡ d S r   )r   ÚsignalsÚ	post_saveÚconnectr   Úpost_deleter"   r   r
   r
   r   r   L   ó   zRealtimeSignalProcessor.setupc                 C   r(   r   )r   r)   r*   Ú
disconnectr   r,   r"   r   r
   r
   r   r   S   r-   z RealtimeSignalProcessor.teardownN)r#   r$   r%   r&   r   r   r
   r
   r
   r   r'   F   s    r'   N)Ú	django.dbr   Úhaystack.exceptionsr   r   r'   r
   r
   r
   r   Ú<module>   s    @