Se agregaron cambios de XMLController
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
import xml.etree.ElementTree as ET
|
import xml.etree.ElementTree as ET
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
|
from typing import List, Dict
|
||||||
|
|
||||||
# Pedimento Completo
|
# Pedimento Completo
|
||||||
@dataclass
|
@dataclass
|
||||||
@@ -247,9 +248,51 @@ class XMLScraper: # Clase me extrae datos de Pedimento
|
|||||||
|
|
||||||
return extract_xml_data(xml_content)
|
return extract_xml_data(xml_content)
|
||||||
|
|
||||||
|
|
||||||
class XMLControllerRemesas:
|
class XMLControllerRemesas:
|
||||||
pass
|
"""
|
||||||
|
Controlador para scrapear XML de consultar remesas.
|
||||||
|
Extrae todos los comprobantesVE, junto con remesaAgente y remesaSA.
|
||||||
|
"""
|
||||||
|
|
||||||
|
namespaces = {
|
||||||
|
"S": "http://schemas.xmlsoap.org/soap/envelope/",
|
||||||
|
"ns2": "http://www.ventanillaunica.gob.mx/common/ws/oxml/respuesta",
|
||||||
|
"ns3": "http://www.ventanillaunica.gob.mx/pedimentos/ws/oxml/consultarremesas",
|
||||||
|
}
|
||||||
|
|
||||||
|
def extract_remesas(self, xml_content: str) -> List[Dict[str, str]]:
|
||||||
|
"""
|
||||||
|
Extrae todos los comprobanteVE de un XML de remesas.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
xml_content: Contenido del XML en string.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Lista de diccionarios con comprobanteVE, remesaAgente y remesaSA.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
root = ET.fromstring(xml_content)
|
||||||
|
|
||||||
|
remesas = []
|
||||||
|
for remesa in root.findall(".//ns3:remesas", self.namespaces):
|
||||||
|
comprobante = remesa.find("ns3:comprobanteVE", self.namespaces)
|
||||||
|
agente = remesa.find("ns3:remesaAgente", self.namespaces)
|
||||||
|
sa = remesa.find("ns3:remesaSA", self.namespaces)
|
||||||
|
|
||||||
|
remesas.append({
|
||||||
|
"comprobanteVE": comprobante.text if comprobante is not None else None,
|
||||||
|
"remesaAgente": agente.text if agente is not None else None,
|
||||||
|
"remesaSA": sa.text if sa is not None else None
|
||||||
|
})
|
||||||
|
|
||||||
|
return remesas
|
||||||
|
|
||||||
|
except ET.ParseError as e:
|
||||||
|
print(f"Error al parsear XML: {e}")
|
||||||
|
return []
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error inesperado: {e}")
|
||||||
|
return []
|
||||||
|
|
||||||
class XMLControllerPartidas:
|
class XMLControllerPartidas:
|
||||||
pass
|
pass
|
||||||
|
|||||||
8
tasks.py
8
tasks.py
@@ -38,7 +38,6 @@ def run_async_task(async_func, *args, **kwargs):
|
|||||||
finally:
|
finally:
|
||||||
loop.close()
|
loop.close()
|
||||||
|
|
||||||
|
|
||||||
@celery_app.task(bind=True, name='tasks.pedimento_completo_task')
|
@celery_app.task(bind=True, name='tasks.pedimento_completo_task')
|
||||||
def pedimento_completo_task(self, request_data: Dict[str, Any]):
|
def pedimento_completo_task(self, request_data: Dict[str, Any]):
|
||||||
"""
|
"""
|
||||||
@@ -159,7 +158,6 @@ def pedimento_completo_task(self, request_data: Dict[str, Any]):
|
|||||||
|
|
||||||
return run_async_task(_execute_pedimento_completo)
|
return run_async_task(_execute_pedimento_completo)
|
||||||
|
|
||||||
|
|
||||||
@celery_app.task(bind=True)
|
@celery_app.task(bind=True)
|
||||||
def partidas_task(self, **kwargs):
|
def partidas_task(self, **kwargs):
|
||||||
"""Tarea asíncrona para obtener partidas"""
|
"""Tarea asíncrona para obtener partidas"""
|
||||||
@@ -278,7 +276,6 @@ def partidas_task(self, **kwargs):
|
|||||||
|
|
||||||
return run_async_task(_execute_partidas)
|
return run_async_task(_execute_partidas)
|
||||||
|
|
||||||
|
|
||||||
@celery_app.task(bind=True)
|
@celery_app.task(bind=True)
|
||||||
def remesas_task(self, **kwargs):
|
def remesas_task(self, **kwargs):
|
||||||
"""Tarea asíncrona para obtener remesas"""
|
"""Tarea asíncrona para obtener remesas"""
|
||||||
@@ -365,7 +362,6 @@ def remesas_task(self, **kwargs):
|
|||||||
|
|
||||||
return run_async_task(_execute_remesas)
|
return run_async_task(_execute_remesas)
|
||||||
|
|
||||||
|
|
||||||
@celery_app.task(bind=True)
|
@celery_app.task(bind=True)
|
||||||
def acuse_task(self, **kwargs):
|
def acuse_task(self, **kwargs):
|
||||||
"""Tarea asíncrona para obtener acuse"""
|
"""Tarea asíncrona para obtener acuse"""
|
||||||
@@ -504,7 +500,6 @@ def acuse_task(self, **kwargs):
|
|||||||
|
|
||||||
return run_async_task(_execute_acuse)
|
return run_async_task(_execute_acuse)
|
||||||
|
|
||||||
|
|
||||||
# Tarea asíncrona para consultar el estado de un pedimento
|
# Tarea asíncrona para consultar el estado de un pedimento
|
||||||
@celery_app.task(bind=True, name='tasks.estado_pedimento_task')
|
@celery_app.task(bind=True, name='tasks.estado_pedimento_task')
|
||||||
def estado_pedimento_task(self, request_data: Dict[str, Any]):
|
def estado_pedimento_task(self, request_data: Dict[str, Any]):
|
||||||
@@ -573,7 +568,6 @@ def estado_pedimento_task(self, request_data: Dict[str, Any]):
|
|||||||
raise e
|
raise e
|
||||||
return run_async_task(_execute_estado_pedimento)
|
return run_async_task(_execute_estado_pedimento)
|
||||||
|
|
||||||
|
|
||||||
@celery_app.task(bind=True)
|
@celery_app.task(bind=True)
|
||||||
def edocument_task(self, **kwargs):
|
def edocument_task(self, **kwargs):
|
||||||
"""Tarea asíncrona para obtener edocument"""
|
"""Tarea asíncrona para obtener edocument"""
|
||||||
@@ -734,7 +728,6 @@ def edocument_task(self, **kwargs):
|
|||||||
|
|
||||||
return run_async_task(_execute_edocument)
|
return run_async_task(_execute_edocument)
|
||||||
|
|
||||||
|
|
||||||
@celery_app.task(bind=True)
|
@celery_app.task(bind=True)
|
||||||
def coves_task(self, **kwargs):
|
def coves_task(self, **kwargs):
|
||||||
"""Tarea asíncrona para obtener coves"""
|
"""Tarea asíncrona para obtener coves"""
|
||||||
@@ -1006,4 +999,3 @@ def acuse_cove_task(self, **kwargs):
|
|||||||
raise e
|
raise e
|
||||||
|
|
||||||
return run_async_task(_execute_acuse_cove)
|
return run_async_task(_execute_acuse_cove)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user