59 lines
2.6 KiB
Python
59 lines
2.6 KiB
Python
from django.db.models.signals import post_save
|
|
from django.dispatch import receiver
|
|
from django.db import transaction
|
|
from time import sleep
|
|
|
|
from api.customs.models import Pedimento, ProcesamientoPedimento, Cove, EDocument
|
|
from api.customs.tasks.internal_services import (
|
|
crear_procesamiento_remesa,
|
|
crear_procesamiento_partida,
|
|
crear_procesamiento_cove,
|
|
crear_procesamiento_acuse_cove,
|
|
crear_procesamiento_acuse,
|
|
crear_procesamiento_edocument
|
|
)
|
|
from api.customs.tasks.microservice import (
|
|
ejecutar_pedimento_completo,
|
|
procesar_pedimento_completo_individual
|
|
|
|
)
|
|
|
|
@receiver(post_save, sender=Pedimento)
|
|
def trigger_celery_task_on_create(sender, instance, created, **kwargs):
|
|
if created:
|
|
procesar_pedimento_completo_individual.apply_async(args=[instance.id, instance.organizacion.id])
|
|
|
|
@receiver(post_save, sender=Pedimento)
|
|
def trigger_celery_task_on_update(sender, instance, created,**kwargs):
|
|
if not created:
|
|
import logging
|
|
logger = logging.getLogger('api.customs.async_operations')
|
|
logger.info(f"Pedimento actualizado: {instance.id}, verificando servicios a crear...")
|
|
sleep(4)
|
|
def enqueue_tasks():
|
|
if instance.remesas:
|
|
logger.info(f"Creando proceso de remesas para pedimento {instance.id}")
|
|
crear_procesamiento_remesa.apply_async(args=[str(instance.id)])
|
|
if hasattr(instance, 'numero_partidas') and instance.numero_partidas and instance.numero_partidas > 0:
|
|
logger.info(f"Creando proceso de partida para pedimento {instance.id}")
|
|
crear_procesamiento_partida.apply_async(args=[str(instance.id)])
|
|
|
|
transaction.on_commit(enqueue_tasks)
|
|
|
|
@receiver(post_save, sender=Cove)
|
|
def trigger_celery_task_on_cove_create(sender, instance, created, **kwargs):
|
|
if created:
|
|
import logging
|
|
logger = logging.getLogger('api.customs.async_operations')
|
|
logger.info(f"Cove creado: {instance.id}, creando procesamiento...")
|
|
crear_procesamiento_cove.apply_async(args=[str(instance.pedimento.id)])
|
|
crear_procesamiento_acuse_cove.apply_async(args=[str(instance.pedimento.id)])
|
|
|
|
@receiver(post_save, sender=EDocument)
|
|
def trigger_celery_task_on_edocument_create(sender, instance, created, **kwargs):
|
|
if created:
|
|
import logging
|
|
logger = logging.getLogger('api.customs.async_operations')
|
|
logger.info(f"EDocument creado: {instance.id}, creando procesamiento...")
|
|
crear_procesamiento_edocument.apply_async(args=[str(instance.pedimento.id)])
|
|
crear_procesamiento_acuse.apply_async(args=[str(instance.pedimento.id)]) |