| Server IP : 65.108.144.40 / Your IP : 216.73.217.165 Web Server : Apache/2.4.52 (Ubuntu) System : Linux ubuntu-8gb-hel1-1 5.15.0-173-generic #183-Ubuntu SMP Fri Mar 6 13:29:34 UTC 2026 x86_64 User : dev ( 1000) PHP Version : 8.2.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/dev/code/erp/accessibility/ |
Upload File : |
"""
accessibility/signals.py
"""
import threading
from django.core.cache import cache
from django.db.models.signals import post_save
from django.dispatch import receiver
from accessibility.middlewares import ACCESSIBILITY_CACHE_USER_KEYS
from accessibility.models import DefaultAccessibility
from employee.models import EmployeeWorkInformation
from horilla.signals import post_bulk_update
def _clear_accessibility_cache():
for _user_id, cache_keys in ACCESSIBILITY_CACHE_USER_KEYS.copy().items():
for key in cache_keys:
cache.delete(key)
def _clear_bulk_employees_cache(queryset):
for instance in queryset:
cache_key = ACCESSIBILITY_CACHE_USER_KEYS.get(
instance.employee_id.employee_user_id.id
)
if cache_key:
cache.delete(cache_key)
@receiver(post_save, sender=EmployeeWorkInformation)
def monitor_employee_update(sender, instance, created, **kwargs):
"""
This method to track employee instance update
"""
_sender = sender
_created = created
cache_keys = ACCESSIBILITY_CACHE_USER_KEYS.copy().get(
instance.employee_id.employee_user_id.id, []
)
for key in cache_keys:
cache.delete(key)
@receiver(post_save, sender=DefaultAccessibility)
def monitor_accessibility_update(sender, instance, created, **kwargs):
"""
This method is used to track accessibility updates
"""
_sender = sender
_created = created
_instance = instance
thread = threading.Thread(target=_clear_accessibility_cache)
thread.start()
@receiver(post_bulk_update, sender=EmployeeWorkInformation)
def monitor_employee_bulk_update(sender, queryset, *args, **kwargs):
"""
This method is used to track accessibility updates
"""
_sender = sender
_queryset = queryset
thread = threading.Thread(target=_clear_bulk_employees_cache(queryset))
thread.start()