25 lines
757 B
Python
25 lines
757 B
Python
|
|
from django.db.models.signals import post_delete, post_save
|
||
|
|
|
||
|
|
from . import index
|
||
|
|
from .tasks import insert_or_update_object_task
|
||
|
|
|
||
|
|
|
||
|
|
def post_save_signal_handler(instance, **kwargs):
|
||
|
|
insert_or_update_object_task.enqueue(
|
||
|
|
instance._meta.app_label, instance._meta.model_name, str(instance.pk)
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
def post_delete_signal_handler(instance, **kwargs):
|
||
|
|
index.remove_object(instance)
|
||
|
|
|
||
|
|
|
||
|
|
def register_signal_handlers():
|
||
|
|
# Loop through list and register signal handlers for each one
|
||
|
|
for model in index.get_indexed_models():
|
||
|
|
if not getattr(model, "search_auto_update", True):
|
||
|
|
continue
|
||
|
|
|
||
|
|
post_save.connect(post_save_signal_handler, sender=model)
|
||
|
|
post_delete.connect(post_delete_signal_handler, sender=model)
|