from django.db.models.signals import post_save from django.dispatch import receiver from api.notificaciones.models import Notificacion from api.record.models import Document @receiver(post_save, sender=Document) def trigger_notificacion(sender, instance, created, **kwargs): if created: from api.cuser.models import CustomUser from api.customs.models import Pedimento from api.notificaciones.models import TipoNotificacion # Obtener el tipo de notificación (puedes ajustar el nombre si tienes tipos definidos) tipo_info, _ = TipoNotificacion.objects.get_or_create(tipo="info", defaults={"descripcion": "Notificación informativa"}) # Notificar a todos los usuarios de la organización usuarios_org = CustomUser.objects.filter(organizacion=instance.organizacion) for usuario in usuarios_org: # Notificar solo a importadores cuyo RFC coincide if (usuario.is_importador or usuario.groups.filter(name='Importador').exists()): if usuario.rfc == instance.pedimento.contribuyente: Notificacion.objects.create( tipo=tipo_info, dirigido=usuario, mensaje=f"Se agregó el documento {instance.archivo} al pedimento {instance.pedimento.pedimento} \n {instance.document_type.nombre}", ) # Notificar a otros roles (no importadores) elif (usuario.is_superuser or usuario.groups.filter(name='Agente Aduanal').exists() or usuario.groups.filter(name='admin').exists()): Notificacion.objects.create( tipo=tipo_info, dirigido=usuario, mensaje=f"Se agregó el documento {instance.archivo} al pedimento {instance.pedimento.pedimento} \n {instance.document_type.nombre}", )