34 lines
1.8 KiB
Python
34 lines
1.8 KiB
Python
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}",
|
|
) |