Coverage for netbox/search/signals.py: 100%

9 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-10 18:35 +0000

1""" 

2Connects the global search cache's post_save/post_delete receivers. 

3 

4Wired explicitly from CoreConfig.ready() (core/apps.py) rather than as a side effect of this 

5module being imported, so connection happens deterministically at startup instead of depending 

6on which of this subsystem's several consumers (netbox.forms.search, netbox.views.misc, 

7extras.management.commands.reindex, netbox.search.jobs, core.jobs, dcim.signals) happens to 

8import netbox.search first. 

9""" 

10from django.db.models.signals import post_delete, post_save 

11from django.dispatch import receiver 

12 

13from .backends import search_backend 

14 

15 

16@receiver(post_save) 

17def caching_handler(sender, instance, created, **kwargs): 

18 """ 

19 Update the search cache when an object is created or modified. Delegates to whichever 

20 backend is configured; see SearchBackend.caching_handler(). 

21 """ 

22 search_backend.caching_handler(sender, instance, created=created, **kwargs) 

23 

24 

25@receiver(post_delete) 

26def removal_handler(sender, instance, **kwargs): 

27 """ 

28 Remove an object's cached representation when it is deleted. Delegates to whichever 

29 backend is configured; see SearchBackend.removal_handler(). 

30 """ 

31 search_backend.removal_handler(sender, instance, **kwargs)