Consulta, verificación y descarga
This commit is contained in:
parent
56ac8e20b8
commit
00b077fc5b
|
@ -21,6 +21,8 @@ def main(args):
|
|||
util.descargar_archivos(args)
|
||||
return
|
||||
|
||||
util.descargar(args)
|
||||
|
||||
return
|
||||
|
||||
|
||||
|
@ -71,10 +73,3 @@ def _process_command_line_arguments():
|
|||
if __name__ == '__main__':
|
||||
args = _process_command_line_arguments()
|
||||
main(args)
|
||||
|
||||
|
||||
# ~ {
|
||||
# ~ 'IdSolicitud': '307a22f0-1259-479c-96b1-2852f9072c58',
|
||||
# ~ 'CodEstatus': '5000',
|
||||
# ~ 'Mensaje': 'Solicitud Aceptada'
|
||||
# ~ }
|
||||
|
|
|
@ -5,6 +5,7 @@ import uuid
|
|||
from calendar import monthrange
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
from time import sleep
|
||||
|
||||
from .cfdi_cert import SATCertificate
|
||||
from .sat_web import SATWebService
|
||||
|
@ -213,9 +214,15 @@ def _validate_download_args(args):
|
|||
log.error(msg)
|
||||
return False, {}
|
||||
|
||||
if not args.path_download:
|
||||
msg = 'La ruta de descarga es requerida [-dd]'
|
||||
log.error(msg)
|
||||
return False, {}
|
||||
|
||||
data['cert'] = cert
|
||||
data['id'] = args.id_request
|
||||
data['id_file'] = args.id_file
|
||||
data['path'] = args.path_download
|
||||
|
||||
return True, data
|
||||
|
||||
|
@ -277,13 +284,75 @@ def descargar_archivos(args):
|
|||
if file_data is None:
|
||||
log.debug(result)
|
||||
else:
|
||||
msg = f'Guardando: {f}.zip'
|
||||
path_zip = join(data['path'], f'{f}.zip')
|
||||
msg = f'Guardando: {path_zip}'
|
||||
log.info(msg)
|
||||
with open(f"{f}.zip", 'wb') as f:
|
||||
with open(path_zip, 'wb') as f:
|
||||
f.write(file_data)
|
||||
msg = f'\tArchivo guardado correctamente'
|
||||
log.info(msg)
|
||||
return
|
||||
|
||||
|
||||
def _validate_args(args):
|
||||
result, data = _validate_requests_args(args)
|
||||
if not result:
|
||||
return False, {}
|
||||
|
||||
if not args.path_download:
|
||||
msg = 'La ruta de descarga es requerida [-dd]'
|
||||
log.error(msg)
|
||||
return False, {}
|
||||
|
||||
data['path'] = args.path_download
|
||||
|
||||
return True, data
|
||||
|
||||
|
||||
def descargar(args):
|
||||
OK = '5000'
|
||||
|
||||
result, data = _validate_args(args)
|
||||
if not result:
|
||||
return
|
||||
|
||||
sat = SATWebService(data['cert'])
|
||||
|
||||
if not sat.is_authenticate:
|
||||
log.error(sat.error)
|
||||
return
|
||||
|
||||
result = sat.request_download(data)
|
||||
if result['CodEstatus'] != OK:
|
||||
log.error(result)
|
||||
return
|
||||
|
||||
data['id'] = result['IdSolicitud']
|
||||
while True:
|
||||
result = sat.verify(data)
|
||||
if result['EstadoSolicitud'] in ('1', '2'):
|
||||
msg = 'Esperando un minuto para volver a verificar...'
|
||||
log.info(msg)
|
||||
sleep(60)
|
||||
continue
|
||||
|
||||
if result['EstadoSolicitud'] == '3':
|
||||
for f in result['files']:
|
||||
data['id_file'] = f
|
||||
result, file_data = sat.download(data)
|
||||
if file_data is None:
|
||||
log.debug(result)
|
||||
else:
|
||||
path_zip = join(data['path'], f'{f}.zip')
|
||||
msg = f'Guardando: {path_zip}'
|
||||
log.info(msg)
|
||||
with open(path_zip, 'wb') as f:
|
||||
f.write(file_data)
|
||||
msg = f'\tArchivo guardado correctamente'
|
||||
log.info(msg)
|
||||
break
|
||||
|
||||
log.error(result)
|
||||
|
||||
return
|
||||
|
||||
|
|
Loading…
Reference in New Issue