diff --git a/api/customs/tasks/microservice_v2.py b/api/customs/tasks/microservice_v2.py index fda2461..7d68986 100644 --- a/api/customs/tasks/microservice_v2.py +++ b/api/customs/tasks/microservice_v2.py @@ -431,7 +431,7 @@ def documentos_con_errores(organizacion_id): @shared_task def procesar_procesamiento_pedimento(organizacion_id): - print("Creando procesamientos de pedimentos para organización:", organizacion_id) + # print("Creando procesamientos de pedimentos para organización:", organizacion_id) pedimentos = Pedimento.objects.filter(organizacion_id=organizacion_id) # pedimentos = Pedimento.objects.filter(id='1c061182-ac68-45b0-b3d7-35bf2264982b') @@ -454,7 +454,7 @@ def procesar_procesamiento_pedimento(organizacion_id): , servicio_id=3 , tipo_procesamiento_id=2) # servicio 3: Pedimento Completo - print("Procesamiento creado para pedimento:", pedimento.pedimento_app) + # print("Procesamiento creado para pedimento:", pedimento.pedimento_app) procesar_pedimentos_completos.delay(organizacion_id) @@ -477,8 +477,8 @@ def ejecutar_por_organizacion_y_procesamiento(organizacion_id, procesamiento): procesar_procesamiento_pedimento.delay(organizacion_id) else: # Procesamiento no reconocido - print(f"Procesamiento no reconocido: {procesamiento}") - # pass + # print(f"Procesamiento no reconocido: {procesamiento}") + pass def ejecutar_todos_por_organizacion(organizacion_id): procesar_coves.delay(organizacion_id) diff --git a/api/customs/urls.py b/api/customs/urls.py index 68374cd..89c45a4 100644 --- a/api/customs/urls.py +++ b/api/customs/urls.py @@ -10,7 +10,8 @@ from .views import ( ViewSetEDocument, ViewSetCove, ImportadorViewSet, - PartidaViewSet + PartidaViewSet, + EjecutarComandoView ) # from .views import YourViewSet # Import your viewsets here @@ -95,4 +96,7 @@ urlpatterns = [ path('auditor/obtener-respuesta/acuse-cove-vu/', auditor_obtener_respuesta_acuse_cove_vu, name='obtener-respuesta-acuse-cove-vu'), path('auditor/obtener-peticion/edocument-vu/', auditor_obtener_peticion_edocument_vu, name='obtener-peticion-edocument-vu'), path('auditor/obtener-respuesta/edocument-vu/', auditor_obtener_respuesta_edocument_vu, name='obtener-respuesta-edocument-vu'), + + path('procesamientopedimentos-ejecutar-comando/', EjecutarComandoView.as_view(), name='procesamientopedimentos-ejecutar-comando'), + ] \ No newline at end of file diff --git a/api/customs/views.py b/api/customs/views.py index 6e3b10e..8e38446 100644 --- a/api/customs/views.py +++ b/api/customs/views.py @@ -1777,6 +1777,57 @@ class ImportadorViewSet(viewsets.ModelViewSet, OrganizacionFiltradaMixin): my_tags = ['Importadores'] +class EjecutarComandoView(APIView): + permission_classes = [IsAuthenticated & (IsSameOrganization | IsSameOrganizationAndAdmin | IsSameOrganizationDeveloper | IsSuperUser)] + """ + View para ejecutar el comando de microservicios desde una petición HTTP. + """ + def post(self, request): + # organizacion_id = request.data.get('organizacion_id', None) + procesamiento = request.data.get('procesamiento', None) + todos = request.data.get('todos', False) + + if not self.request.user.is_authenticated or not hasattr(self.request.user, 'organizacion'): + raise ValueError("Usuario no autenticado o sin organización") + + organizacion_id = self.request.user.organizacion.id + nombre_organizacion = self.request.user.organizacion.nombre + + if procesamiento is None and todos == False: + return Response( + {"message": 'No se detectó el tipo de ejecución de procesamiento.'}, + status=status.HTTP_400_BAD_REQUEST + ) + + procesamiento = str(procesamiento) + + from api.customs.tasks import microservice_v2 + + if todos: + + microservice_v2.ejecutar_todos_por_organizacion(organizacion_id) + + return Response( + {"message": f'Se estarán ejecutando todos los procesos para la organización {nombre_organizacion} en segundo plano.'}, + status=status.HTTP_200_OK + ) + + elif organizacion_id: + + if procesamiento: + microservice_v2.ejecutar_por_organizacion_y_procesamiento(organizacion_id, procesamiento) + return Response( + {"message": f'Se estará ejecutando el procesamiento {procesamiento} para la organización {nombre_organizacion} en segundo plano.'}, + status=status.HTTP_200_OK + ) + + return Response( + {"error": "Parámetros insuficientes. Proporcione 'organizacion' y 'procesamiento', o seleccione 'todos'."}, + status=status.HTTP_400_BAD_REQUEST + ) + + my_tags = ['Procesamientos_Pedimentos'] + # helper | reglas para formato de docuemnto antes de cargarlo def normalize_filename(filename): """