""" Signals for QI Projects — sends a notification when a task is assigned. """ import logging from django.db.models.signals import post_save from django.dispatch import receiver logger = logging.getLogger(__name__) @receiver(post_save, sender="projects.QIProjectTask") def notify_task_assignment(sender, instance, created, **kwargs): """Send an in-app notification when a QI task is assigned to a staff member.""" if not instance.assigned_to: return # Only notify on new assignments (creation with an assignee) if not created: return user = getattr(instance.assigned_to, "user", None) if not user: return try: from apps.notifications.services import create_in_app_notification create_in_app_notification( user=user, title=f"New QI Task: {instance.title}", message=f"You have been assigned a task in project '{instance.project.name}'.", notification_type="qi_task_assigned", action_url=f"/projects/{instance.project.id}/", ) except Exception as e: logger.warning(f"Failed to send QI task notification: {e}")