def descargar_paquete(self, pk): paquete = models.PaqueteDeDescarga.objects.get(pk=pk, activo=True) cer_der = paquete.solicitud_de_descarga.empresa.cer.read() key_der = paquete.solicitud_de_descarga.empresa.key.read() fiel = Fiel(cer_der, key_der, paquete.solicitud_de_descarga.empresa.contrasena) auth = Autenticacion(fiel) token = auth.obtener_token() descarga_masiva = DescargaMasiva(fiel) result = descarga_masiva.descargar_paquete( token, paquete.solicitud_de_descarga.empresa.rfc, paquete.id_paquete) paquete.cod_estatus = int(result['cod_estatus']) paquete.mensaje = result['mensaje'] if int(result['cod_estatus']) == 5000: zip_file = ContentFile(base64.b64decode(result['paquete_b64'])) paquete.paqueteb64.save('{}.zip'.format(paquete.id_paquete), zip_file) paquete.fecha_descarga = timezone.now() paquete.save() return True
def verificar_solicitud_descarga(self, pk): solicitud = models.SolicitudDeDescarga.objects.get(pk=pk, activo=True) if solicitud.estado_solicitud and solicitud.estado_solicitud >= 3: return 'Solicitud en estado: {}'.format( solicitud.get_estado_solicitud_display()) cer_der = solicitud.empresa.cer.read() key_der = solicitud.empresa.key.read() fiel = Fiel(cer_der, key_der, solicitud.empresa.contrasena) auth = Autenticacion(fiel) token = auth.obtener_token() verificador = VerificaSolicitudDescarga(fiel) result = verificador.verificar_descarga(token, solicitud.empresa.rfc, str(solicitud.id_solicitud)) verificacion = models.VerificacionSolicitudDeDescarga() verificacion.solicitud_de_descarga = solicitud verificacion.fecha_verificacion = timezone.now() verificacion.cod_estatus = int(result['cod_estatus']) verificacion.mensaje = result['mensaje'] verificacion.cod_estatus_solicitud = int(result['codigo_estado_solicitud']) verificacion.estado_solicitud = int(result['estado_solicitud']) verificacion.numero_cfdis = int(result['numero_cfdis']) solicitud.cod_estatus = verificacion.cod_estatus_solicitud solicitud.estado_solicitud = verificacion.estado_solicitud solicitud.fecha_ultima_verificacion = verificacion.fecha_verificacion solicitud.numero_cfdis = verificacion.numero_cfdis if solicitud.estado_solicitud == 3: solicitud.fecha_resolucion = verificacion.fecha_verificacion for paq in result['paquetes']: paquete = models.PaqueteDeDescarga() paquete.solicitud_de_descarga = solicitud paquete.id_paquete = paq paquete.save() descargar_paquete.delay(paquete.pk) verificacion.save() solicitud.save() return True
## RFC = 'JSI140527TS9' FIEL_CER = 'jsi140527ts9.cer' FIEL_KEY = 'Claveprivada_FIEL_JSI140527TS9_20190723_092521.key' FIEL_PAS = '******' PATH = '/Users/Ramitos/Downloads/drive-download-20210123T211237Z-001' cer_der = open(os.path.join(PATH, FIEL_CER), 'rb').read() key_der = open(os.path.join(PATH, FIEL_KEY), 'rb').read() FECHA_INICIAL = datetime.date(2020, 1, 1) FECHA_FINAL = datetime.date(2020, 6, 24) fiel = Fiel(cer_der, key_der, FIEL_PAS) auth = Autenticacion(fiel) token = auth.obtener_token() print('TOKEN: ', token) descarga = SolicitaDescarga(fiel) # EMITIDOS # solicitud = descarga.solicitar_descarga( # token, RFC, FECHA_INICIAL, FECHA_FINAL, rfc_emisor=RFC, tipo_solicitud='CFDI' # ) # RECIBIDOS solicitud = descarga.solicitar_descarga( token, RFC, FECHA_INICIAL, FECHA_FINAL, rfc_receptor=RFC, tipo_solicitud='CFDI'
def autenticacion(): auth = Autenticacion(fiel) token = auth.obtener_token() return token
def post(self, request, empresa_pk): empresa = get_object_or_404(models.Empresa, pk=empresa_pk, user=self.request.user, activo=True) form = forms.SolicitudDeDescargaForm(request.POST) if form.is_valid(): try: fecha_inicial = form.cleaned_data['fecha_inicial'] fecha_final = form.cleaned_data['fecha_final'] tipo = form.cleaned_data['tipo'] tipo_solicitud = form.cleaned_data['tipo_solicitud'] fecha_inicial = datetime.combine(fecha_inicial, datetime.min.time()) fecha_final = datetime.combine(fecha_final, datetime.max.time()) rfc_emisor = None rfc_receptor = None if tipo == 'E': rfc_emisor = empresa.rfc elif tipo == 'R': rfc_receptor = empresa.rfc cer_der = empresa.cer.read() key_der = empresa.key.read() fiel = Fiel(cer_der, key_der, empresa.contrasena) auth = Autenticacion(fiel) token = auth.obtener_token() descarga = SolicitaDescarga(fiel) result = descarga.solicitar_descarga( token, empresa.rfc, fecha_inicial, fecha_final, rfc_emisor=rfc_emisor, rfc_receptor=rfc_receptor, tipo_solicitud=tipo_solicitud ) solicitud = models.SolicitudDeDescarga() solicitud.empresa = empresa solicitud.id_solicitud = result['id_solicitud'] solicitud.fecha_inicial = fecha_inicial solicitud.fecha_final = fecha_final solicitud.rfc_receptor = rfc_receptor solicitud.rfc_emisor = rfc_emisor solicitud.tipo_solicitud = tipo_solicitud solicitud.cod_estatus = int(result['cod_estatus']) solicitud.mensaje = result['mensaje'] solicitud.save() return redirect('descargadorweb:solicitud_de_descarga_detalle', empresa_pk=empresa.pk, pk=solicitud.pk) except Exception as e: form.add_error(None, str(e)) return render(request, self.template_name, {'empresa': empresa, 'form': form})